-7

このコードの何が問題なのかわかりません。nomatric一致する正しいものをキー入力すると、正しいだけでなくエラー メッセージも表示されます。

どうしたの?

public void Search(int nomatric) {
    for (int i = 0; i < student.length; i++) {
        if (student[i].matrix == nomatric) {
            System.out.printf("%-25s%-25s%-25s%-25s%-25s\n", "Matric", "Name", "Course work", "Final exam", "Grade");
            System.out.printf("%-20d %-20s %-20.2f %-20.2f %-20s", student[i].matrix, student[i].name, student[i].coursework, student[i].finalexam, student[i].grade);
            System.out.println();
        }  
    }
    System.out.println("Cannot find the matric number!!!");
    System.out.println();
}
4

3 に答える 3

2

1 つのフラグ変数を使用します。for ループの前に false に設定します。ループ内では、一致が見つかるたびに、このフラグを true に設定します。ループの外側では、フラグの if 条件を使用します。フラグが false の場合は、一致が見つからなかったことを意味し、エラーのみを出力します。

  public void Search(int nomatric) {
     boolean flag=false;
     for (int i = 0; i < student.length; i++) {
     if (student[i].matrix == nomatric) {
        System.out.printf("%-25s%-25s%-25s%-25s%-25s\n", "Matric", "Name", "Course    work", "Final exam", "Grade");
        System.out.printf("%-20d %-20s %-20.2f %-20.2f %-20s", student[i].matrix,    student[i].name, student[i].coursework, student[i].finalexam, student[i].grade);
        System.out.println();
        flag=true;
    }  
 }
 if( ! flag) {
    System.out.println("Cannot find the matric number!!!");
    System.out.println();
 }
}
于 2012-12-26T05:20:35.397 に答える
1

エラーメッセージSystem.out.println("Cannot find the matric number!!!");はコード内で無条件であるため、常にそのエラーが表示されます

于 2012-12-26T05:17:53.730 に答える
1

を返すため、初期の意味のあるブロックvoidの利便性が得られません。何らかの形でブロックreturnに入ったということを示す必要があります。if次の 2 つのオプションがあります。

  • ブール値を使用して、ifブロックに入った場合はメッセージを出力しないことを示します。または
  • String暗黙的に出力する代わりにメソッドから戻り、代わりに呼び出し元に戻りメッセージを出力させます。

(*: returnif ステートメントから ing を使用することもできますが、このスタイルは推奨されません。これは、boolean変数を使用する代わりに、 のreturn直後に配置することを意味しますSystem.out.println()。)

オプション 1 で書き直すと、メソッドは次のようになります。

public void search(int nomatric) {
    boolean success = false;
    for (int i = 0; i < student.length; i++) {
        if (student[i].matrix == nomatric) {
            success = true;
            System.out.printf("%-25s%-25s%-25s%-25s%-25s\n", "Matric", "Name", "Course work", "Final exam", "Grade");
            System.out.printf("%-20d %-20s %-20.2f %-20.2f %-20s", student[i].matrix, student[i].name, student[i].coursework, student[i].finalexam, student[i].grade);
            System.out.println();
        }  
    }
    if(!success) {

        System.out.println("Cannot find the matric number!!!");
        System.out.println();
    }
}

オプション 2 は、読者への演習として残されています。

于 2012-12-26T05:18:45.700 に答える