特定の問題に取り組んでいますが、これは技術的には宿題であり、何が間違っているのかを知りたいので、より一般的な解決策が欲しいです。いくつかの注意点: スキャナー クラスを使用する必要があり、データが配列などに含まれていません。サイトを読んで、BufferedReadingが優先されることを知っています。私がそれについて読んだことから、私もそれを好むと思います。しかし、それは私がここで働くことを許されているものではありません。
私はデータファイルから読み込もうとしていて、そのファイルで何かをしようとしています。データは次のようになります。
1234 55 64 75
1235 44 32 12
...
nnnn xx yy zz
0
2234 47 57 67
2235 67 67 67
...
nnnn xx yy zz
0
各行は ID で、その後に 3 つのグレードが続きます。各クラスはゼロ行で終了し、while ループが先頭から始まります。
while (classContinues == true) {
//get the student's data and assign it in the program
studentID = inputFile.nextInt();
programGrade = inputFile.nextInt();
midtermGrade = inputFile.nextInt();
finalGrade = inputFile.nextInt();
// in here I'm doing other stuff but I don't need help with that
// check if the class has more students
if (inputFile.nextInt() == 0) {
classContinues = false;
} else {
classContinues = true;
inputFile.nextLine(); // eat the rest of the line
}
}
さて、このようなコードを実行すると、必要な出力を出力することができますが、データの 1 行おきにスキップされます。inputFile.nextLine(); を削除します。2 番目の学生 ID をスキップし、他のすべての出力を台無しにします。だから私が知りたいのは、私が間違っていることだと思います.次の学生IDを食べずに、次の整数がゼロになることをどのようにチェックすればよいですか?