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 ArrayListvalidictorian

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

nameおよびは配列リストではないため、それらに要素を追加するgpaことはできません。見えているのは(sic.)addだけであり、とにかく、異なる型の要素を に追加することはできません(まあ、 がtype を使用するようにパラメータ化されている場合はそれらを追加できますが、それは悪い習慣です)。ArrayListvalidictorianArrayListArrayListObject

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 に答える