Странная задача на циклы
Есть такая задача:
Бесконечный цикл while (true) с прерыванием break применяется для решения достаточно ограниченного спектра задач. Чаще всего его удобнее заменить на цикл while с условием. Потренируйтесь это делать. Эта программа с помощью бесконечного цикла суммирует числа, которые вводит пользователь. Она работает до тех пор, пока не будет введён 0. Перепишите её, заменив бесконечный цикл на цикл while с условием.
Вот исходный код, который нужно дописать:
import java.util.Scanner;
class Praktikum {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int sum = 0; // Сумма
int input; // Ввод пользователя
while (true) {
input = scanner.nextInt();
if (input == 0) {
break;
}
sum = sum + input;
}
System.out.println("Сумма введённых чисел: " + sum);
}
}
Вот подсказка к решению:
- Цикл должен выполняться до тех пор, пока пользователь не введёт 0, то есть значение переменной input не равно нулю. Это и станет его условием input != 0.
- Переменной input нужно присваивать значение перед циклом и внутри него, так как считывать ввод пользователя придётся и там, и там.
Вот мой код, который компилятор не принимает:
import java.util.Scanner;
class Praktikum {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int sum = 0; // Сумма
int input; // Ввод пользователя
while (int input != 0) {
input = scanner.nextInt();
sum = sum + input;
}
if (int input == 0) {
break;
}
System.out.println("Сумма введённых чисел: " + sum);
}
}
Компилятор выдаёт следующее:
Вывод Ошибка препроцессинга: Не используйте break и while(true) Failed compilation
Т.е., если я правильно понимаю, прерывать цикл с помощью break не разрешается. Но как тогда решить задачу? Или же я неправильно понимаю задание...
Заранее благодарю за помощь.
Ответы (3 шт):
import java.util.Scanner;
class Praktikum {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int sum = 0; // Сумма
int input = scanner.nextInt(); // <- 2. Переменной input нужно присваивать значение перед циклом и внутри него, так как считывать ввод пользователя придётся и там, и там.
while (input != 0) {
input = scanner.nextInt();
sum = sum + input;
}
System.out.println("Сумма введённых чисел: " + sum);
//Далее лишний код.
//if (int input == 0) {
// break;
//}
}
}
int sum = 0; // Сумма
int input; // Ввод пользователя
input = scanner.nextInt();
while (input != 0) {
sum = sum + input;
input = scanner.nextInt();
}
System.out.println("Сумма введённых чисел: " + sum); }
Например так.
while ((input = scanner.nextInt()) != 0) {
sum = sum + input;
}
Из плюсов - не надо чтение 2 раза писать.