2017-11-16 9 views
1

私はちょうどjavaを学び始めました。私は学生を登録するためのアプリケーションを作成しようとしています。クラスの特定のインスタンスを検索しますか?

この質問に基づいてhow-would-i-create-a-new-object...私はクラスのインスタンスを作成するためにwhileループを作成しました。

public class RegStudent { 

    ArrayList<Student> studentList = new ArrayList<>(); 

    Scanner input = new Scanner(System.in); 

    public void reggaStudent(int start) { 

     while (start != 0) { 
      String programNamn, studNamn; 
      int totalPoint, antalKurser; 

      System.out.println("Vad heter programmet?"); 
      programNamn = input.nextLine(); 
      System.out.println("Vad heter studenten"); 
      studNamn = input.nextLine(); 
      System.out.println("Hur många poäng har studenten?"); 
      totalPoint = input.nextInt(); 
      System.out.println("Hur många kurser är studenten registrerad på?"); 
      antalKurser = input.nextInt(); 

      // Add student to list of students 
      studentList.add(new Student(totalPoint, antalKurser, 
             programNamn, studNamn)); 
      System.out.println("Vill du registrera in en fler studenter? " 
           + "Skriv 1 för ja och 0 för nej"); 
      start = input.nextInt(); 
      input.nextLine(); 
     } // End of whileloop 

    } 
} 

クラスは次のとおりです。

public class Student { 
    private int totalPoint; 
    private int antalKurser; 
    private String programNamn; 
    private String studNamn; 
    private static int counter; 

    public Student(int totalPoint, int antalKurser, String program, String studNamn) { 

     this.totalPoint = totalPoint; 
     this.antalKurser = antalKurser; 
     this.programNamn = program; 
     this.studNamn = studNamn; 
     counter++; 
    } 

    public int getTotalPoint() { 
     return totalPoint; 
    } 

    public void setTotalPoint(int totalPoint) { 
     this.totalPoint = totalPoint; 
    } 

    public int getAntalKurser() { 
     return antalKurser; 
    } 

    public void setAntalKurser(int antalKurser) { 
     this.antalKurser = antalKurser; 
    } 

    public String getProgramNamn() { 
     return programNamn; 
    } 

    public void setProgramNamn(String programNamn) { 
     this.programNamn = programNamn; 
    } 

    public String getStudNamn() { 
     return studNamn; 
    } 

    public void setStudNamn(String studNamn) { 
     this.studNamn = studNamn; 
    } 
    public static int getCount(){ 

     return counter; 
    } 
    @Override 
    public String toString() { 

     return String.format(" Namn: %s, Program: %s, Antal poäng: %d, " 
     + "Antal kurser: %d\n ", studNamn, programNamn, totalPoint, antalKurser); 
    } 

} 

はどうやって取得し、特定のインスタンス内のインスタンス変数を設定しようとして行くのですか?私はインスタンスを見つける。

私はそれが悪いデザインかもしれないことを理解しますが、その場合、私は未知数の生徒をインスタンス化したい場合を解決する方法についていくつかの入力を感謝します。

私は実際にクラスのいくつかのインスタンスを作成したのを見るためにカウンタを追加しました。そして、あなたを...あなたには、いくつかのコレクション内のオブジェクトを持っているとき、あなたは、特定のプロパティを持つ1 /複数のオブジェクトを取得したい:つまり

for (Student student : studentList) { 
    if (student.getProgramName().equals("whatever")) { 
    some match, now you know that this is the student you are looking for 

+0

あなたが求めていることはまったくありません。特定の生徒をあなたのリストからどのように得ることができるかを知りたいですか?例えば名前(stugNamn)で? –

+0

'studentList'とは何ですか?それはどのように宣言されていますか? –

+0

はい、まさに!または、totalPointまたは他の変数を設定します。 – Garnbutik

答えて

2

は、あなたは、単にのように、特定のプロパティのオブジェクトを照会しますコレクションを繰り返し、各エントリを検索条件と照合してテストします。

また、プロパティを「外部化」して、たとえばオブジェクトをマップに入れることもできます。

+0

もちろん、ありがとう!なぜ私はもっと複雑な解決策を期待していたのか分かりません。マップについて読むが、私がjava(そしてプログラミング)を始めたばかりなので、私はすでに頭がおかしいと思う。 – Garnbutik

+0

hm、まだ実際には新しい名前を設定するなどの方法が得られていません。 1時間は探していますが、解決策を見つけることはできません。新しい値を設定したい特定の要素のインデックスを見つける必要はありませんか? 私は studentList.set(1、 "Peter")したい場合は、インデックスが必要ですが、リストがクラスのオブジェクトである場合、インデックスを取得する方法を見つけることができません。他の種類。 – Garnbutik

+0

私の例では、コレクション内の現在の要素を指し示す "student"変数がすでにあります。その参照でセッターメソッドを呼び出すと、対応するオブジェクトが更新されます。私はそれが私にコメントを落とさないなら、私が私が明日何ができるかを見てもらえるなら、助けてくれることを願っています。 – GhostCat

0
studentList.add(new Student(totalPoint, antalKurser, 
            programNamn, studNamn)); 

これで、Studentオブジェクトがリストに追加されました。

List<Student> studentList = new ArrayList<>(); 

あなたのコードのどこかにあると思います。リストにオブジェクトStudentを入力した後、それを使用してインスタンスを見つけることができます。検索にどの基準を使用するかを決める必要があります。特定の名前の生徒を探したいですか?あなたは与えられたプログラムのすべての生徒を見つけたいですか?特定のポイント以上の生徒を探したいですか?

多分あなたはこれらのそれぞれをしたいと思うかもしれません。 1つを選んでから、あなたがどのように検索を行うかについてのいくつかのアイデアを書く紙を入手してください。たとえば、「Bill」という名前の生徒を探したいとします。あなたが学生に関する情報を持つカードの束を与えられたとしましょう。このカードのスタックは、プログラムのリストを表します。 Billの名前を付けたカードのこのスタックをどうやって検索しますか? という単語をとしてください。どのようにこれをまだコード化するか心配しないでください。コンピュータプログラムを作成する最初のステップは、ソリューションを小さなステップに分割することです。物理的な世界でこれを手で行う方法を明確にしたら、記述をJavaコードに変換できます。

関連する問題