0

私のプログラムには、Student、School、TestStudentの3つのクラスがあります。生徒のクラス内で生徒の状態を宣言し、生徒の科目を取得する方法もあります。学校のクラスで生徒のタイプの配列リストを作成しましたが、学校で生徒のメソッドにアクセスしようとすると、エラーが発生します。newStudentタイプを解決できません。これが私のコードです。

public class Student {
        String name;
    String subject;
    int age;
    Student(String name,String subject,int age){
    this.name = name;
    this.subject = subject;
    this.age = age;
}
public void setName(String name){
    this.name = name;
}
public String getName(){
    return this.name;
}
public String getSubject(){
    return this.subject;
}
public int getAge(){
    return this.age;
}

}

public class School {
public ArrayList <Student> students = new ArrayList <Student>(); 
public void addStudent(String name,String subject,int age){
    Student newStudent = new Student(name,subject,age);
    students.add(newStudent);
}
public void showSubject(String student){
     newStudent.getSubject();


}

} 
4

3 に答える 3

4
newStudent.getSubject();

これはあなたが望むものではありません。studentからまだ取得していないためですArrayList

ArrayListを繰り返し処理し、パラメータで渡された名前を持つ生徒を確認する必要があります。したがって、for-eachループを使用して、を繰り返し処理し、ArrayList適切なStudentを返します。

したがって、メソッドは次のようになります。-

public void showSubject(String student){
     for (Student student: students) {
        if (student.getName().equals(student)) {
            System.out.println(student.getSubject());
        }
     }
}

Map@Peterが彼の回答で説明しているように、ここを使用する方がよいことに注意してください

于 2013-01-06T10:21:42.790 に答える
2

学生を名前で検索したい場合は、学生の名前を不変にし、Map<String, Student>代わりに使用します。これはあなたが書くことを可能にするでしょう

 Student student = map.get(studentName);

リストを使用すると、Rohitが提案するように、すべてのエントリを検索する必要があります。注:リストを使用して、(実際の生活と同じように)同じ名前の複数の学生がいる可能性があります。

于 2013-01-06T10:23:46.403 に答える
1

newStudentはのローカル変数でaddStudent()あるため、からアクセスすることはできませんshowSubject()

サブジェクトにアクセスするためのロジックはどうあるべきかわかりませんが、たとえば、students.get(0).getSubject()[リストが空でない場合]を介してアクセスできます。

于 2013-01-06T10:21:24.000 に答える