如何将字符串类型的用户输入添加到 Java 中的 ArrayList?

How do I add a User Input of type String to an ArrayList in Java?

我正在尝试制作一个课程注册系统,我的一个 类(课程)以课程属性(即课程编号、课程名称、教师、学生)为中心。我正在制作一个 ArrayList,以便管理员(用户类型之一)可以向课程添加尽可能多的讲师,因为 he/she 想要 - 我已经创建了一个 Scanner 和一个 String 变量以及所有内容,但是当我写.add 命令,Eclipse 突出显示“.add”并显示 "the method .add() is undefined for the type of scanner"。现在,我可以理解这一点,但我不知道如何解决它并且我尝试了很多想法。

方法如下:`

public static String Instructor(){
        String courseInstructors;

        System.out.println("Please add name(s) of course instructors.");
        ArrayList<String> Instructors= new ArrayList<String>();
        Scanner courseInst = new Scanner(System.in);
        courseInstructors = courseInst.next();
        //courseInst.add(courseInstructors); 

        for(String courseInstructors1 : Instructors) {
            courseInstructors1 = courseInstructors;
            courseInst.add(courseInstructors1);
        }

        return;
    }`

请遵守 Java 命名约定,变量名使用小写 - instructors 而不是 Instructors

此外,您想要添加到数组列表中,因此请在

上调用 add()
instructors.add(courseInstructors1)

您可能还想考虑选择比 courseInstructors1 更好的变量命名,例如 courseInstructor,因为您指的是所有 instructors 中的 instructor

同样在您的 for 循环中,您正在执行以下操作

for(String courseInstructors1 : Instructors) {
    courseInstructors1 = courseInstructors;
    courseInst.add(courseInstructors1);
}

这可以简化为

for(String courseInstructors1 : Instructors) {
    courseInst.add(courseInstructors);
}

如果您查看简化,您会发现迭代 Instructors 在这里毫无意义,因为您没有使用 courseInstructors1 的内容。

我想了解你的循环是干什么用的。

如果您想从一个输入中获取多个讲师姓名,那么您需要这样的东西。

//get input
//"John Peggy Adam blah blah"
courseInstructors = courseInst.next();

//split the string by white space
String[] instArr = courseInstructors.split(" ");
//will give array of John, Peggy, Adam, blah, blah

然后执行 foreach 循环将它们添加到列表中。

for(String inst: instArr){
    instructors.add(inst);
}

否则我会建议您这样做,这样您就不必担心拆分名称等问题。

courseInstructor = courseInst.nextLine();

while(!courseInstructor.equals("done"){
    //add name to list of instructors.
    instructors.add(courseInstructor);
    //get next name.
    courseInstructor = courseInt.nextLin();
    //if the user types done, it will break the loop.
    //otherwise come back around and add it and get next input.
}