Примеры использования цикла while

Открыта

Квест Java Syntax Pro еще в разработке

Сейчас мы вычитываем лекции и работаем над задачами. Если заметили ошибки — пишите в комментариях: всё учтем перед релизом. Спасибо!


1. Подсчет суммы чисел с использованием цикла while

Давайте напишем программу, которая вводит числа с клавиатуры (пока пользователь вводит что-то похожее на числа) и выводит на экран их сумму. Вот как будет выглядеть код такой программы (приводим только код внутри метода main).

Код Пояснение
Scanner console = new Scanner(System.in);
int sum = 0;
while (console.hasNextInt())
{
   int x = console.nextInt();
   sum = sum + x;
}
System.out.println(sum);
Создаем объект Scanner для чтения данных с консоли.
В переменной sum будем хранить сумму чисел.
Пока в консоли вводят целые числа

считываем очередное число в переменную x.
Добавляем x к сумме чисел (переменная sum).

Выводим подсчитанную сумму на экран.

2. Максимум введенных чисел с использованием цикла while

Вторая программа тоже будет считывать числа с клавиатуры (пока пользователь вводит что-то похожее на числа), но на экран нужно будет вывести наибольшее из введенных чисел. Вот как будет выглядеть код такой программы (приводим только код внутри метода main).

Код Пояснение
Scanner console = new Scanner(System.in);
int max = 0;
while (console.hasNextInt())
{
   int x = console.nextInt();
   if (x > max)
     max = x;
}
System.out.println(max);
Создаем объект Scanner для чтения данных с консоли.
В переменной max будем хранить максимум чисел.
Пока в консоли вводят целые числа

считываем очередное число в переменную x.
Сравниваем x и max. Если x больше max,
обновляем максимум.

Выводим найденный максимум чисел на экран.

Тут есть интересный момент: если все введённые числа с клавиатуры будут отрицательными, программа выведет на экран число 0. Что, собственно говоря, неверно.

Поэтому стартовое значение max должно быть как можно меньше.

Вариант 1:

Можно присвоить ему -2000000000 (минус два миллиарда). Что уже довольно неплохо.

Вариант 2:

Присвоить самое маленькое значение типа int. Для него есть специальная константа: Integer.MIN_VALUE;

Вариант 3:

Еще лучше — инициализировать max первым введенным числом. Это лучший вариант. Но это можно сделать только в том случае, если по условию задачи пользователь должен ввести хотя бы одно число.


Комментарии (7)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Priestik System Administrator в Aspen CIS Russia
16 декабря 2020, 14:33
ЗАРАЗА я в одной задаче на Syntax с этим MIN_VALUE пол дня сидел пока не додумался минимальное значение int вписать )))) не мог понять почему валидатор не пропускал, а тут так доходчиво , отличнейших курс будет !!!! спасибо ВАМ !!!!! чую как все повторю, разорву напрочь CORE )))
Dmitry Galas 8 уровень, Минск
6 декабря 2020, 13:12
так а зачем сразу присваивать минимальное значение для i? можно же инициализировать int i, а значение присваивать уже в цикле. и тогда не будет "неправильного поведения" если введено отрицательное число или не введено ничего не понимаю в чем проблема и зачем такие странные решения придумывать, присваивать какие-то непонятные значения заранее
Yaroslav Rubinskyi 1 уровень
16 апреля 2020, 13:20
"Максимум введенных чисел с использованием цикла while" также просто выводит введенные с клавиатуры числа на экран не производя с ними никаких действий.
Yaroslav Rubinskyi 1 уровень
16 апреля 2020, 12:37
Подсчет суммы чисел с помощью цикла while не считает сумму чисел, введенных с клавиатуры...он только прибавляет к sum = 0 введенное число и выводит его на экран, игнорируя ранее введенные числа. Программа просто прибавляет к введенному числу 0 и выводит его на экран. В чем ошибка?
Василий Бабин Мракоборец в ДурмстрангExpert
19 мая 2020, 23:05
Не видя Ваш код не понять где у Вас ошибка.
Tangom 9 уровень, Санкт-Петербург
30 марта 2020, 20:55
Сравниваем x и max. Если x больше max, обновляем максимум. Выводим подсчитанную сумму на экран. - Здесь мы выводим не сумму а максимум . Правильный вариант -Выводим найденный максимум чисел на экран.
Сергей 11 уровень
13 февраля 2020, 13:02
Но если пользователь не введет ни одного числа, то выводить минимальный Integer в качестве максимального введенного числа тоже будет неправильно.