Вывод нескольких строк на консоль из инструкций if

#java #netbeans

#java #netbeans

Вопрос:

Мне нужна помощь в печати нескольких строк из операторов if на консоль. Код, который у меня есть сейчас, приведен ниже, однако он будет печатать только средний балл теста и то, что получил студент, но не результаты по первым трем тестовым баллам. Кто-нибудь знает, в чем проблема?

 import java.util.Scanner;

public class TestScoresAndGrade {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        // Gathering info from user
        System.out.println("Enter your first test score!");
        int firstScore = keyboard.nextInt();

        System.out.println("Enter your second test score!");
        int secondScore = keyboard.nextInt();

        System.out.println("Enter your third test score!");
        int thirdScore = keyboard.nextInt();
        
        int averageTestScore = (firstScore * secondScore * thirdScore)/3;
        
        // Telling the student what grade they got on the first test
        if (firstScore >= 90) {
            System.out.println("Congrats you got an A on your first test!");
        }
        else if (firstScore < 90 amp;amp; firstScore > 80) {
            System.out.println("You got a B on your first test!");
        }
        else if (firstScore < 80 amp;amp; firstScore > 70) {
            System.out.println("You got a C on your first test!");
        }
        else if (firstScore < 70 amp;amp; firstScore > 60) {
            System.out.println("You got a D on your first test!");
        }
        else if (firstScore < 60) {
            System.out.println("You got a F on your first test!");
        }

        // Telling student what grade they got on the second test
        if (secondScore >= 90) {
            System.out.println("Congrats you got an A on your first test!");
        }
        else if (secondScore < 90 amp;amp; secondScore > 80) {
            System.out.println("You got a B on your first test!");
        }
        else if (secondScore < 80 amp;amp; secondScore > 70) {
            System.out.println("You got a C on your first test!");
        }
        else if (secondScore < 70 amp;amp; secondScore > 60) {
            System.out.println("You got a D on your first test!");
        }
        else if (secondScore < 60) {
            System.out.println("You got a F on your first test!");
        }

        // Telling student what they got on third test
        if (thirdScore >= 90) {
            System.out.println("Congrats you got an A on your third test!");
        }
        else if (thirdScore < 90 amp;amp; thirdScore > 80) {
            System.out.println("You got a B on your third test!");
        }
        else if (thirdScore < 80 amp;amp; thirdScore > 70) {
            System.out.println("You got a C on your third test!");
        } 
        else if (thirdScore < 70 amp;amp; thirdScore > 60) {
            System.out.println("You got a D on your third test!");
        }
        else if (thirdScore < 60) {
            System.out.println("You got a F on your third test!");
        }
        
        //Telling a student what there average score was    
        if (averageTestScore >= 90) {
            System.out.println("Congrats your avergage is an A!");
        }
        else if (averageTestScore < 90 amp;amp; averageTestScore > 80) {
            System.out.println("Your average is a B!");
        }
        else if (averageTestScore < 80 amp;amp; averageTestScore > 70) {
            System.out.println("Your average is a C!");
        }
        else if (averageTestScore < 70 amp;amp; averageTestScore > 60) {
            System.out.println("Your average is a D!");
        }
        else if (averageTestScore < 60) {
            System.out.println("Your average is an F!");
        }
    }
}
  

Комментарии:

1. Если ваш счет равен ровно 80, или ровно 70, или ровно 60, ни одно из ваших условий ему не соответствует. Также ваше среднее значение рассчитано неправильно, потому что вы умножаете оценки вместо их добавления. Также при записи else вам не нужно перепроверять условие, указанное в if инструкции. Вот что else значит.

Ответ №1:

Как указывает @khelwood, вы исключаете 80, 70, 60 из своих блоков if-else. Если вы можете предоставить образец ваших тестовых данных, у нас будет лучшее представление о том, что происходит.

В качестве примечания,

  1. Обычно мы выполняем if-else, если-…else.(по соглашению последняя ветвь — else, если вы не хотите намеренно исключить некоторые случаи)
  2. как сказал @khelwood, средняя формула неверна. Еще одна вещь, вам следует использовать / 3.0, если вы хотите получить десятичную дробь, поскольку вы выполняете целочисленное деление здесь на 3.
  3. Если вы хотите улучшить читаемость, подумайте о том, чтобы инкапсулировать дублированную логику и сделать ее повторно используемой.