我正在尝试制作课程注册系统,其中一门课程(课程)以课程属性为中心(即课程编号,课程名称,教师,学生)。我正在创建一个ArrayList,以便管理员(其中一个用户类型)可以按照他/她的意愿为课程添加尽可能多的教师 - 我创建了一个Scanner和一个String变量以及所有内容,但是当我编写.add时命令,Eclipse突出显示" .add"并说"方法.add()未定义扫描仪的类型"。现在,我可以理解这一点,但我不知道如何解决它,我已经尝试了很多想法。
这是方法:`
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;
}`
答案 0 :(得分:3)
请遵循Java命名约定,广告使用小写字母表示变量名称 - instructors
而不是Instructors
。
此外,您想要添加到您的arraylist,因此请在
上调用add()
instructors.add(courseInstructors1)
您可能还需要考虑选择比courseInstructors1
更好的变量命名,例如仅courseInstructor
,因为您指的是所有instructor
的{{1}}。
同样在您的for循环中,您正在执行以下操作
instructors
这可以简化为
for(String courseInstructors1 : Instructors) {
courseInstructors1 = courseInstructors;
courseInst.add(courseInstructors1);
}
如果你看一下简化,你会看到迭代教师在这里没有任何意义,因为你没有使用courseInstructors1的内容。
答案 1 :(得分:1)
我试图了解你的循环是什么。
如果你试图从一个输入中获取多个教师名称,那么你需要这样的东西。
//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.
}