如何在开关中创建新对象
How do I create new objects in a switch
我是 Java 的新手,我正在尝试创建一个程序,您可以在其中注册会员加入俱乐部,但我在尝试添加/创建人员时遇到了困难。
我似乎无法弄清楚如何在 if 语句或开关中继续创建 class 的新对象。 (比方说通过转换并添加 10 个新成员)。
public static void main(String[] args) throws NoSuchMethodException {
System.out.println("Opties: \n" +
"1) Add a member to the club.");
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
scanner.nextLine();
do{
switch(choice){
case 1:
System.out.println("New member name: ");
String newMemberName = scanner.nextLine();
System.out.println("New member age: ");
int newMemberAge = scanner.nextInt();
scanner.nextLine();
System.out.println("""
New member category:\s
A) Player
B) Coach""");
String categoryChoice = scanner.nextLine();
if (categoryChoice.equalsIgnoreCase("a")){
} else if(categoryChoice.equalsIgnoreCase("b")){
} else break;
case 2:
///temp
}
} while(choice != 3);
这是 class + subclass
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
class Player extends Person {
public Player(String name, int age) {
super(name, age);
}
}
class Trainer extends Person {
public Trainer(String name, int age) {
super(name, age);
}
}
您不应该在 if
语句中创建变量,您应该事先使用默认值 null
创建变量,然后在每个 if
语句中更改变量的值正确的对象:
public static void main(String[] args) throws NoSuchMethodException {
System.out.println("Opties: \n" +
"1) Add a member to the club.");
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
scanner.nextLine();
Person person = null; //needs to be the super class
do{
switch(choice){
case 1:
System.out.println("New member name: ");
String newMemberName = scanner.nextLine();
System.out.println("New member age: ");
int newMemberAge = scanner.nextInt();
scanner.nextLine();
System.out.println("""
New member category:\s
A) Player
B) Coach""");
String categoryChoice = scanner.nextLine();
if (categoryChoice.equalsIgnoreCase("a")){
person = new Player(newMemberName, newMemberAge);
} else if(categoryChoice.equalsIgnoreCase("b")){
person = new Trainer(newMemberName, newMemberAge);
} else break;
case 2:
///temp
}
} while(choice != 3);
}
由于您是在循环内创建对象,因此创建一个 ArrayList<Person>
而不是单个变量会更有意义,并且在每次迭代期间向其添加一个新对象:
ArrayList<Person> people = new ArrayList<Person>(); //needs to be the super class - an empty list
do { ...
if (categoryChoice.equalsIgnoreCase("a")){
people.add(new Player(newMemberName, newMemberAge));
} else if(categoryChoice.equalsIgnoreCase("b")){
people.add(new Trainer(newMemberName, newMemberAge));
} else break;
} while(choice != 3);
我是 Java 的新手,我正在尝试创建一个程序,您可以在其中注册会员加入俱乐部,但我在尝试添加/创建人员时遇到了困难。
我似乎无法弄清楚如何在 if 语句或开关中继续创建 class 的新对象。 (比方说通过转换并添加 10 个新成员)。
public static void main(String[] args) throws NoSuchMethodException {
System.out.println("Opties: \n" +
"1) Add a member to the club.");
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
scanner.nextLine();
do{
switch(choice){
case 1:
System.out.println("New member name: ");
String newMemberName = scanner.nextLine();
System.out.println("New member age: ");
int newMemberAge = scanner.nextInt();
scanner.nextLine();
System.out.println("""
New member category:\s
A) Player
B) Coach""");
String categoryChoice = scanner.nextLine();
if (categoryChoice.equalsIgnoreCase("a")){
} else if(categoryChoice.equalsIgnoreCase("b")){
} else break;
case 2:
///temp
}
} while(choice != 3);
这是 class + subclass
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
class Player extends Person {
public Player(String name, int age) {
super(name, age);
}
}
class Trainer extends Person {
public Trainer(String name, int age) {
super(name, age);
}
}
您不应该在 if
语句中创建变量,您应该事先使用默认值 null
创建变量,然后在每个 if
语句中更改变量的值正确的对象:
public static void main(String[] args) throws NoSuchMethodException {
System.out.println("Opties: \n" +
"1) Add a member to the club.");
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
scanner.nextLine();
Person person = null; //needs to be the super class
do{
switch(choice){
case 1:
System.out.println("New member name: ");
String newMemberName = scanner.nextLine();
System.out.println("New member age: ");
int newMemberAge = scanner.nextInt();
scanner.nextLine();
System.out.println("""
New member category:\s
A) Player
B) Coach""");
String categoryChoice = scanner.nextLine();
if (categoryChoice.equalsIgnoreCase("a")){
person = new Player(newMemberName, newMemberAge);
} else if(categoryChoice.equalsIgnoreCase("b")){
person = new Trainer(newMemberName, newMemberAge);
} else break;
case 2:
///temp
}
} while(choice != 3);
}
由于您是在循环内创建对象,因此创建一个 ArrayList<Person>
而不是单个变量会更有意义,并且在每次迭代期间向其添加一个新对象:
ArrayList<Person> people = new ArrayList<Person>(); //needs to be the super class - an empty list
do { ...
if (categoryChoice.equalsIgnoreCase("a")){
people.add(new Player(newMemberName, newMemberAge));
} else if(categoryChoice.equalsIgnoreCase("b")){
people.add(new Trainer(newMemberName, newMemberAge));
} else break;
} while(choice != 3);