Моя программа предназначена для сложения всех четных целых чисел от 2 до входного числа от 20 до 60. Логика для этого верна и будет работать, но она должна иметь возможность запускаться снова, если пользователь пожелает, и когда он запускается снова, ввод изменяется только в том случае, если вы вводите новое целое число, большее, чем на предыдущей итерации. Если вы введете один меньший, он просто использует тот же целочисленный ввод, что и раньше. Вот код:
import java.util.Scanner;
public class Practice_7_1
{
public static void main (String[] args)
{
Scanner scan = new Scanner (System.in);
int input;
int i = 2;
int sum = 0;
int restart;
do
{
System.out.print ("\nEnter a value between 20 and 60: ");
input = scan.nextInt();
if (input >= 20 && input <= 60) // checks validity of input
{
while (i <= input)
{
sum = sum + i;
i = i + 2;
}
System.out.println ("\nSum of even numbers between 2 and " +
input + " is: " + sum);
}
else
{
System.out.println ("\nInput is not between 20 and 60. ");
}
System.out.print ("\nEnter a new value? (1 for yes, any other number
for no): ");
restart = scan.nextInt();
} while (restart == 1);
}
}
Так, например, если я введу 20 в качестве входных данных, программа выведет:
Сумма четных чисел от 2 до 20 составляет: 110
Введите новое значение? (1 - да, любой другой номер - нет):
а затем ввожу 30 (такой же запуск программы):
Сумма четных чисел от 2 до 30 составляет: 240
Введите новое значение? (1 - да, любой другой номер - нет):
а затем снова пытаюсь ввести 20:
Сумма четных чисел от 2 до 20 составляет: 240
Введите новое значение? (1 - да, любой другой номер - нет):
(Очевидно, должно быть 110, а не 240)
Моя первоначальная мысль заключалась в том, что на самом деле он не сканирует новый ввод на второй итерации, но поскольку он будет работать, если я буду продолжать давать ему более ценные входные данные, я знаю, что это не так.
input
в ноль в начале цикла? - person Nate Barbettini   schedule 06.10.2015