如何在开关中创建新对象

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);