所以我正在尝试创建一个程序,该程序接受学生姓名和GPA的用户输入,并将信息输入到单个arraylist中。差不多,我正在尝试创建一个存储浮点数和字符串变量的ArrayList
并存储用户输入。我正在尝试使用构造函数来完成此任务,但是我无法让代码工作。这是我到目前为止所做的:
public class BestStudent {
static Scanner scanner = new Scanner(System.in);
static String name;
static float gpa;
private class Student {
public Student (String n, float g){
name = n;
gpa = g;
}
}
public static void findValidictorian(){
ArrayList<Student> validictorian = new ArrayList<Student>();
while (true){
System.out.println("Please enter student name: ");
name.add(scanner.next());
System.out.println("Please enter your student's cumulative GPA: ");
gpa.add(scanner.nextFloat());
System.out.println("do you want to add another student yes/no?");
String answer = scanner.next();
if (answer.toLowerCase().equals("no")){
break;
}
}
}
public static void main(String[] args) {
findValidictorian();
}
}
我在我的ArrayList的两个add方法上都收到了一个错误,而且在我的生活中我无法解释为什么。
答案 0 :(得分:3)
validictorian
是ArrayList
,但您尝试添加到gpa
和name
,不 ArrayList
} s,你永远不会添加到validictorian
。我想你想要的更像是
name = scanner.next();
...
gpa = scanner.nextFloat();
validictorian.add(new Student(name, gpa));
答案 1 :(得分:0)
name
和gpa
不是数组列表,您不能add
个元素。唯一的ArrayList
名为validictorian
(原文如此),无论如何,您无法向ArrayList
添加不同类型的元素(嗯,您可以如果将ArrayList
参数化为使用类型Object
,则添加它们,但这是一种不好的做法。)
请注意,validictorian
应包含Student
类型的对象。你一直想做的是:
System.out.println("Please enter student name: ");
String aName = scanner.next();
System.out.println("Please enter your student's cumulative GPA: ");
float aGpa = scanner.nextFloat();
validictorian.add(new Student(aName, aGpa));