使用ArrayList调用构造函数

时间:2013-04-09 21:26:16

标签: java arraylist

所以我正在尝试创建一个程序,该程序接受学生姓名和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方法上都收到了一个错误,而且在我的生活中我无法解释为什么。

2 个答案:

答案 0 :(得分:3)

validictorianArrayList,但您尝试添加到gpaname ArrayList } s,你永远不会添加到validictorian。我想你想要的更像是

name = scanner.next();
...
gpa = scanner.nextFloat();
validictorian.add(new Student(name, gpa));

答案 1 :(得分:0)

namegpa不是数组列表,您不能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));