1

因此,我正在尝试创建一个程序,该程序接受用户输入学生姓名和 GPA 并将信息输入到单个数组列表中。几乎,我正在尝试创建一个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 方法都出现错误,我终其一生都无法弄清楚原因。

4

2 回答 2

3

validictorian是一个ArrayList,但你试图添加到gpaname,这不是 ArrayLists,你永远不会添加到validictorian。我觉得你想要的更像

name = scanner.next();
...
gpa = scanner.nextFloat();
validictorian.add(new Student(name, gpa));
于 2013-04-09T21:28:08.387 回答
0

name并且gpa不是数组列表,您不能add为它们添加元素。唯一能ArrayList看到的是validictorian(原文如此),无论如何,您不能将不同类型的元素添加到一个ArrayList(好吧,如果参数化为使用 type ,您可以添加它们,但这是一个不好的做法。)ArrayListObject

请注意,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));
于 2013-04-09T21:28:48.673 回答