UPDATE: I made some changes based on some answers I got and it worked. The correct code is-
public class Tsett {
static HashSet<String> names=new HashSet<String>();
static String name="";
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
while(2>1){
String s=input.next();
char choice=s.charAt(0);
switch(choice){
case '1': addname(); break;
case '2': removename(); break;
case '3': displayname(); break;
case '4': System.exit(0); break;
default:System.out.println("Invalid Choice Entered.");
}
}
}
public static void addname(){
Scanner b=new Scanner(System.in);
System.out.println("Enter a name to be added.");
name=b.next();
names.add(name);
}
public static void removename(){
Scanner b=new Scanner(System.in);
System.out.println("Enter a name to be remove.");
name=b.next();
names.remove(name);
}
public static void displayname(){
System.out.println("The names are as follows-");
for(String newname:names)
System.out.println(newname);
}
}
Using the keyword 'static' solved the problem.
I wrote the following code for my menu driven program on 'names'.
package tut4;
import java.util.HashSet;
import java.util.Scanner;
public class Tsett {
HashSet<String> names = new HashSet<String>();
public static void main(String[] args) {
while (2 > 1) {
Scanner input = new Scanner(System.in);
String s = input.next();
char choice = s.charAt(0);
switch (choice) {
case '1':
addname();
break;
case '2':
removename();
break;
case '3':
displayname();
break;
case '4':
System.exit(0);
break;
default:
System.out.println("Invalid Choice Entered.");
}
}
}
public static void addname() {
String name = "";
Scanner b = new Scanner(System.in);
System.out.println("Enter a name to be added.");
name = b.next();
names.add(name);
}
public static void removename() {
String name = "";
Scanner b = new Scanner(System.in);
System.out.println("Enter a name to be remove.");
name = b.next();
names.remove(name);
}
public static void displayname() {
System.out.println("The names are as follows-");
for (String newname : names) {
System.out.println(newname);
}
}
}
The problem arising is that
cannot make static reference to non-static field "names"
in the addname()
, removename()
, displayname()
functions.
Can anyone explain to me why this error is occurring and how to fix it?