Я использую оператор while в своем коде, где внутри оператора while пользователь вводит число. Чтобы остановить цикл от программы, пользователь должен ввести слово «стоп». Однако, как только я ввожу число, вывод переходит на другую строку без печати оператора, который я хочу напечатать, и мне нужно снова ввести желаемый ввод, чтобы программа начала цикл. Единственный раз, когда эта проблема НЕ возникает, когда пользователь вводит «стоп» ПЕРВЫЙ, тогда код работает нормально.
Это чтобы найти максимальное, минимальное и среднее значение любого количества введенных пользователем чисел. Я попытался изменить порядок операторов else / if и параметров для указанных операторов else / if, но, похоже, ничего не работает.
boolean stopped = false;
int numberAmount = 0;
int invalidAmount = 0;
double max = Integer.MIN_VALUE;
double min = Integer.MAX_VALUE;
double mean = 0;
while(stopped == false)
{
System.out.print("Enter a number (type "+"\""+"stop"+"\""+" to stop): ");
String originalInput = userInput.nextLine();
if(originalInput.equals("stop"))
{
stopped = true;
invalidAmount ++;
System.out.println(numberAmount+" numbers were entered with "+invalidAmount+" invalid inputs.");
}
else if(userInput.hasNextDouble())
{
double currentValue = Double.parseDouble(originalInput);
max = Math.max(max, currentValue);
min = Math.min(min, currentValue);
mean = currentValue;
numberAmount ++;
}
else if(originalInput.equals("stop") == false)
{
System.out.println("Not a number...");
invalidAmount ++;
}
}
System.out.println("The maximum is "+max+".");
System.out.println("The minimum is "+min+".");
System.out.println("The mean is "+(mean / numberAmount)+".");
userInput.close();
}
}
Например, яожидайте, что результат ввода после 7 будет «Ввести число (введите« stop »для остановки):» на следующей строке (поскольку программа повторяет запрос на ввод числа), где пользователь может продолжать вводить числа по своему усмотрению,Вместо этого фактический вывод представляет собой пустую строку под исходным приглашением для пользовательского ввода, где пользователь должен ввести свой желаемый ввод СНОВА, чтобы программа начала цикл.