#java #file
#java #файл
Вопрос:
Вот код:
Scanner fileRead = new Scanner(file);
while (fileRead.hasNext()) {
score = (fileRead.nextInt());
}
if (score >= 90) {
gradeA ;
scores ;
} else if (score >=80) {
gradeB ;
scores ;
} else if (score >= 70) {
gradeC ;
scores ;
} else if (score >= 60) {
gradeD ;
scores ;
} else if (score >= 50) {
gradeF ;
scores ;
} else if (score >100 || score <0) {
uCount ;
}
Предполагается, что я должен вычислять среднее значение баллов, подсчитывая, сколько их в каждой буквенной оценке. Проблема в том, что он считывает только последнее число вместо ~ 80 разных чисел.
Комментарии:
1.
else if (score >100 ...)
это условие будет выполнено в первом случае,if (score >= 90)
2. На самом деле он считывает все оценки. Вы присваиваете их одной и той же переменной.
Ответ №1:
Ваша логика if-else не выполняется до тех пор, пока цикл while не завершится и весь файл не будет обработан. Это означает, что будет сохранен только последний int score
.
Перемещение закрывающей скобки цикла while должно устранить эту проблему
Ответ №2:
Вам нужно ввести условие if else внутри цикла while.
Scanner fileRead = new Scanner(file);
while (fileRead.hasNext()) {
score = (fileRead.nextInt());
if (score >= 90) {
gradeA ;
scores ;
}
else if (score >=80) {
gradeB ;
scores ;
} else if (score >= 70) {
gradeC ;
scores ;
} else if (score >= 60) {
gradeD ;
scores ;
} else if (score >= 50) {
gradeF ;
scores ;
} else if (score >100 || score <0) {
uCount ;
}
}