как исправить еще, если заявление? - PullRequest
0 голосов
/ 18 сентября 2019

Я использую intellij & java для создания программы, которая может рассчитывать оценку пользователей на основе их входных данных. До сих пор я успешно собирал входные данные от пользователя с помощью сканера и получил среднее значение.Я использую среднее значение, чтобы напечатать буквенную оценку другими утверждениями.Но моя программа печатает только буквенную оценку для оценки F, она не печатает никакую другую, даже когда я набираю оценки, в среднем равные 90.

Строковая оценка;

    if (avg >= 90.0 ) {
        grade = "A";
    } else if (avg >=80.0) {
        grade = "B";
    } else if (avg >=70.0){
        grade = "C"
    } else if (avg >=60.0) {
        grade = "D";
    } else {
        grade = "F";
        System.out.println("Grade is  " + grade );
    }
}
}

Я ожидалпрограмма для проверки всех остальных утверждений if, но если оценка в среднем равна 60 или выше, она не будет печатать оценку is, а просто покажет только среднее значение.

Ответы [ 2 ]

2 голосов
/ 18 сентября 2019

проблема в том, что ваш оператор печати находится внутри блока else, но вы не хотите печатать только тогда, когда else, вы хотите печатать всегда, должны быть вне блоков if-else.

if(A){
   ....// here you are when A is true
 } else if(B){
   .... //here you are when A is false and B is true
 } else {
   .... //here you will be when A and B are false
 }
 System.out.println("grade is:"+ grade); //here you are outside the else block so It does not depend on A nor on B value
1 голос
/ 18 сентября 2019

Вы должны сделать это за 2 шага, потому что здесь печать выполняется ТОЛЬКО в одном случае:

  1. проверьте, в каком диапазоне находится avg, и установите оценку
  2. печатиоценка
if (avg >= 90.0) {
    grade = "A";
} else if (avg >= 80.0) {
    grade = "B";
} else if (avg >= 70.0) {
    grade = "C";
} else if (avg >= 60.0) {
    grade = "D";
} else {
    grade = "F";
}
System.out.println("Grade is  " + grade);

Кроме того, для проблемы с диапазонами, я только что обнаружил, NavigableMap можно использовать как

NavigableMap<Double, String> map = new TreeMap<>();
map.put(0.0, "F");
map.put(60.0, "D");
map.put(70.0, "C");
map.put(80.0, "B");
map.put(90.0, "A");
System.out.println("Grade is " + map.floorEntry(avg).getValue());

Подробности здесь Использование карты Javaдля поиска по диапазону

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...