Я пытаюсь написать программу, которая позволяет пользователю вводить серию результатов экзамена в виде целых чисел

#java

#java

Вопрос:

Я пытаюсь написать программу, которая позволяет пользователю вводить серию результатов экзамена в виде целых чисел.

Я хочу, чтобы выходные данные выглядели примерно так:

Введите целое число или -99 для выхода: 80

Введите целое число или -99 для выхода: 95

Введите целое число или -99 для выхода: 65

Введите целое число или -99, чтобы выйти: -99

Наибольший: 95 Наименьший: 65

2-й запуск:

Введите целое число или -99, чтобы выйти: -99

Вы не вводили никаких чисел.

Я закончил первую часть, но, похоже, я не могу понять, как получить строку «Вы не вводили никаких чисел», когда я ввожу -99.

Это то, что у меня есть до сих пор.

 import java.util.Scanner;    // Needed for the Scanner class

/**
   This program shows the largest and smallest exam scores. The user
   enters a series of exam scores, then -99 when finished.
   UPDATED to show even number of points using if-statement
*/

public class Grades
{
   public static void main(String[] args)
   {
      int score = 0;       // Exam score
      int min = 100;       // Hold smallest score
      int max = 0;         // Hold largest score

      // Create a Scanner object for keyboard input.
      Scanner keyboard = new Scanner(System.in);

      // Display general instructions.
      System.out.println("Enter an integer, or -99 to quit: ");
      System.out.println();

      // Get the first exam score.
      System.out.print("Enter an integer, or -99 to quit: ");
      score = keyboard.nextInt();

      // Input exam scores until -99 is entered.
      while (score != -99)
      {
         // Add points to totalPoints.
         if (score > max)
            max = score;
         if (score < min)
            min = score;
         // Get the next number of points.
         System.out.print("Enter an integer, or -99 to quit: ");
         score = keyboard.nextInt();
      }

      // Display the largest and smallest score.
      System.out.println("Largest: "   max);
      System.out.println("Smallest: "   min);
   }
}
 

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

1. после цикла и после вывода сбросьте ваши переменные на -99 , затем после цикла перед выводом проверьте, все ли переменные по-прежнему -99

Ответ №1:

Как насчет введения переменной, которая подсчитывает введенные числа и увеличивается в цикле while?

ИЛИ в качестве альтернативы вы можете проверить после цикла while, изменились ли числа:

 if(min > max) {
    System.out.println("You did not enter any numbers.");
}
else {
    System.out.println("Largest: "   max);
    System.out.println("Smallest: "   min);
}
 

Это сработало бы, потому что в начале вы инициализируете min переменную 100 и max переменную 0 , которая приведет true к min > max проверке, если не были введены числа.

Ответ №2:

Следующий код не работает при вводе 0 и 100:

 if (max = 0 amp;amp; min = 100)
    System.out.println("You did not enter any numbers");
else{
    System.out.println("Largest: "   max);
    System.out.println("Smallest: "   min);
}
 

Хорошим вариантом является использование дополнительной логической переменной для проверки любого ввода, отличного от -99:

 public class Grades
{
    public static void main(String[] args)
    {
        int score = 0;       // Exam score
        int min = 100;       // Hold smallest score
        int max = -100;         // Hold largest score
        boolean isAnyScore = false;

        // Create a Scanner object for keyboard input.
        Scanner keyboard = new Scanner(System.in);

        // Display general instructions.
        System.out.print("Enter an integer, or -99 to quit: ");
        System.out.println();

        // Input exam scores until -99 is entered.
        while(true)
        {
            System.out.print("Enter an integer, or -99 to quit: ");
            score = keyboard.nextInt(); //Get the exam score.
            if(score == -99) { break; }
            else { isAnyScore = true; }

            // Add points to totalPoints.
            if (score > max) { max = score; }
            if (score < min) { min = score; }
        }

        // Display the largest and smallest score.
        if(!isAnyScore) { System.out.println("You did not enter any numbers"); }
        else
        {
            System.out.println("Largest: "   max);
            System.out.println("Smallest: "   min);
        }
    }
}
 

Переменная isAnyScore имеет значение false . Когда вы вводите -99 в первом цикле запуска, он все равно будет false, потому что нет присваивания. Когда вы вводите что-то другое, чем -99 в первом цикле запуска, это всегда будет true (оно будет присвоено в любом цикле запуска как true). Когда isAnyScore значение изменяется с false на true, оно всегда будет true, потому что вы всегда присваиваете true, а не false .

Ответ №3:

В конце вашей программы:

 if (max == 0 amp;amp; min == 100)
    System.out.println("You did not enter any numbers");
else{
    System.out.println("Largest: "   max);
    System.out.println("Smallest: "   min);
}
 

Ответ №4:

 public static void main(String[] args) {
    int score = 0;       // Exam score
    int min = 100;       // Hold smallest score
    int max = 0;         // Hold largest score
    boolean isNumberEntered = false; //Test if any number has been entered.

    // Create a Scanner object for keyboard input.
    Scanner keyboard = new Scanner(System.in);

    // Input exam scores until -99 is entered.
    while (score != -99)
    {
        // Get the next number of points.
        System.out.print("Enter an integer, or -99 to quit: ");
        score = keyboard.nextInt();

        if (score == -99) {
            break;
        } else {
            // If the first number is entered
            if (!isNumberEntered)
                isNumberEntered = true;
            // Add points to totalPoints.
            if (score > max)
                max = score;
            if (score < min)
                min = score;
        }


    }

    if (isNumberEntered) {
        // Display the largest and smallest score.
        System.out.println("Largest: "   max);
        System.out.println("Smallest: "   min);
    } else {
        System.out.println("You did not enter any numbers!");
    }

}
 

Как насчет того, чтобы попробовать это? Вы хотите оставаться в цикле, пока не будет добавлено одно число, или htis так, как вы этого хотите?

Ответ №5:

Я думаю, что оценка составляет от 100 до 0.Поэтому я немного изменился. Если входные данные равны <0 и> 100 , вывод: «Вы не вводили никаких чисел».

   package chapter5;


import java.util.Scanner; 
public class Grades
{
   public static void main(String[] args)
   {

      int min = 100;       // Hold smallest score
      int max = 0;         // Hold largest score

      // Create a Scanner object for keyboard input.
      Scanner keyboard = new Scanner(System.in);

      // Display general instructions.
      System.out.print("Enter an integer, or -99 to quit: ");
     int score = keyboard.nextInt();
      if(score<0||score>100){
          System.out.println("You did not enter any numbers.");
      }

      // Input exam scores until -99 is entered.
      if(score>=0||score<=100){
      while (score != -99)
      {
         // Add points to totalPoints.
         if (score > max)
            max = score;
         if (score < min)
            min = score;
         // Get the next number of points.
         System.out.print("Enter an integer, or -99 to quit: ");
         score = keyboard.nextInt();
          if(score==-99){
                System.out.println();}

                else if(score!=-99amp;amp;score<0||score>100){
          System.out.println("You did not enter any numbers.");}

         }
      }
      // Display the largest and smallest score.
      System.out.println("Largest: "   max);
      System.out.println("Smallest: "   min);


   }
}
 

Ответ №6:

 public class Grades
{
 public static void main(String[] args) {
        int score = 0;       // Exam score
        int min = 100;       // Hold smallest score
        int max = 0;         // Hold largest score
        Scanner keyboard = new Scanner(System.in);
        // Display general instructions.
        int i = 1;
        do {
            System.out.println("Enter an integer, or -99 to quit: ");
            score = keyboard.nextInt();
            if (score > max) {
                max = score;
            }
            if (score < min) {
                min = score;
            }
            i  ;
            if (i > 5) {
                break;
            }
        } while ((score != -99));

        // Display the largest and smallest score.
        System.out.println("Largest: "   max);
        System.out.println("Smallest: "   min);
    }
}