0

配列を印刷する必要がありますが、最後に入力した情報のみが印刷されます

それが印刷コードです

   for(int i=0; i<undergrad.length;i++){

        if(undergrad[i]!=null){
        System.out.println("Student Name : "+undergrad[i].getName()+"\n"
                + "Full Address : "+undergrad[i].getAddress()+"\n"
                + "Mobile No :"+undergrad[i].getPhone()+"\n"
                + "Number of Tests : "+undergrad[i].getTests()+"\n"
                + "GBA : "+undergrad[i].GBA()+"\n"
                + "Status : "+undergrad[i].computeGrade()+"\n"
                + "Internship : "+undergrad[i].getInternship()+"\n"
                + "Project Title : "+undergrad[i].getProject_Title()+"\n"
                + "Project Area : "+undergrad[i].getProject_Area()+"\n"
                + "Project Score : "+undergrad[i].computeProjectGrade()+"\n"
                + "****************************************\n");

        } 
    }

オブジェクトの配列のサイズは 10 ですが、情報を 10 未満 (たとえば 4) に入れることができます。印刷するときは、入力した 4 つだけをすべて表示する必要があります。

それが追加部分です

for(int i=0; i<undergrad.length; i++){

    undergrad[i]=new Undergraduate();


    System.out.println("Enter Student Name: ");
    undergrad[i].setName(in.nextLine());

    System.out.println("Full Address  : ");
    undergrad[i].setAddress(in.nextLine());

    System.out.println("Mobile No : ");
    undergrad[i].setPhone(in.nextLong());

    System.out.println("Number of test : ");
     undergrad[i].setTests(in.nextInt());
    tests=undergrad[i].getTests();

    for(int j=0; j<tests; j++){
        System.out.println("Test "+(j+1)+":");
        undergrad[i].setScores(in.nextInt(), j);
    }

    System.out.println("Internship: ");
    undergrad[i].setInternship(in.nextBoolean());

    in.nextLine();
    System.out.println("Project title: ");
    undergrad[i].setProject_Title(in.nextLine());

    System.out.println("Project Area: ");
    undergrad[i].setProject_Area(in.nextLine());

    System.out.println("Supervisor Grade: ");
    undergrad[i].setGrade(in.nextInt(), 0);

    System.out.println("Committee Grade: ");
    undergrad[i].setGrade(in.nextInt(), 1);

    System.out.println("\n");

  break;  
}

ある学生に関する詳細を入力した後、ユーザーが実行したいアクションについて尋ねられる必要があるため、休憩が必要です (別の学生の詳細を書く、または書かれた学生に関する詳細を印刷するなどのアクション)

4

2 に答える 2

2

最後にがありbreak;ます。それを削除すると、動作するはずです。

于 2014-07-19T12:01:50.157 に答える
0

コード全体が機能するためにコードの最後に が必要であると言う場合break;、明らかに、毎回同じ配列インデックス (0) に書き込んでいます。

プログラムを修正する方法は、現在使用しているループを削除し、代わりに外側のループ (ユーザーに選択肢のメニューを提供するループ)forのインデックスを追跡することです。次に、新しい生徒を埋めるコードに移動するたびに、変数をインクリメントします。ii

実際のコードでは、List<Student>これらの問題を自動的に処理する を使用しているため、この問題に遭遇することはないことに注意してください。

于 2014-07-19T11:57:55.457 に答える