#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);
}
}