JavaRush /Курси /Java Syntax Zero /Приклади використання циклу while

Приклади використання циклу while

Java Syntax Zero
Рівень 4 , Лекція 5
Відкрита

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 першим введеним числом. Це найкращий варіант. Але це можна зробити лише у тому випадку, якщо за умовою задачі користувач має ввести хоча б одне число.

Коментарі (31)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
DeeBill Рівень 7
11 вересня 2025
Десь пів годинки не міг зрозуміти, чому мій код не працює(Перше завдання). Помилок ніде не підсвічене. Повністю переписав навіть зразки з лекції, а все те саме. Доки уважніше не прочитав. Компілятор спрацьовує повноцінно ЛИШЕ ТОДІ, КОЛИ ВВЕДЕШ ЗНАЧЕННЯ "НЕ Int"!!! Дурбелик:)
Владислав Рівень 1
3 червня 2025
Последняя задача полная дичь. Не мог вообще догадаться. Открыл решение и увидел точно то же что и написал. В конечном итоге давало все равно ошибку. После чего доперло что не так сравнивал переменные.... Тяжеловато было. Но мне очень нравятся такие моменты.
Антон Рівень 63
19 серпня 2024
Задача цікава умовою. Трохи збивало це: "Якщо введено менше двох цілих чисел, то таку ситуацію обробляти не потрібно, а програма може завершитися з помилкою.". Мінімально стисле рішення: - Вводимо дві змінні з клавіатури і визначаємо мін та мін2. - У циклі підкидаємо по одній змінній і міняємо значення мін та мін2. за потреби. - Перевіряємо що у сканері, якщо не число - виходимо з циклу.
Станіслав Рівень 20
27 березня 2024
Вибачте... Але може я щось не розумію... За умовами третього завдання программа повинна виводити друге за величиною ціле число після мінімального серед уведених з клавіатури. За підказками: Приклад уведення: 8 4 // мінімальне число 7 4 // мінімальне число 5 // друге за величиною число (друге мінімальне) 9 5 // друге за величиною число (друге мінімальне) exit Приклад виведення: 5 Тобто з двох пар мінімальних чисел треба виводити більше. Але код, який був прийнятий за вірний (який я був вимушений подивитись у рішенні, тому що не мог вирішити завдання), цей код видає з двох пар найменше.
Anonymous #3312433 Рівень 5
29 липня 2024
Ти тепер 20 рівень. Потужний. Що скажеш з приводу свого коментаря, чо так?
Anonymous #3425794 Рівень 11
19 березня 2024
Задачі дуже заплутані
ShoorF Рівень 4
1 березня 2024
У першому завдані 5 пункт дуже збиває. я потратив декілька годин намагаючись написати правильний код, але не виходило. Пункт 5 : Якщо введено лише нечисловий символ, слід вивести на екран максимальне значення числа типу int.. У вашому рішенні цей пункт зовсім відсутній, Ваш код не виводить мах заначення.
ZedCj Рівень 11 Expert
17 червня 2024
int min = Integer.MAX_VALUE;
Гаркін Рівень 14
9 лютого 2024
Ой еее.... нагаматись отримати "Мегатрон" це важкувато-погано..... треба було знайти максимально ПАРНЕ число! а не "серед чисел знайти пару, яка буде максимальною"... Все. На сьогодні з програмуванням усе.
Bilan Maksym Рівень 43 Expert
12 березня 2023
Устал думать потому сделал так public class Solution { public static void main(String[] args) { //напишіть тут ваш код TreeSet<Integer> mySet = new TreeSet<>(); Scanner scanner = new Scanner(System.in); while (scanner.hasNextInt()) { mySet.add(scanner.nextInt()); } List<Integer> list=new ArrayList<>(mySet); System.out.println(list.get(1)); } }
theylovevalera Рівень 51
12 березня 2023
Просте рішення для 4 рівня🙂
Василь Рівень 4
3 липня 2023
а що ти зі знаннями про колекції робиш на цьому рівні? Треба співбесіду вже проходити на джуна Java)
Михаил Рівень 28
28 листопада 2023
Походу, это GPT помог
bogdan kravchuk Рівень 11
13 лютого 2023
Середню задачу робив і думав про неї 3 дня. ніяк не міг зрозуміти як її правильно будувати. коли відрив код виявилося що я не те робив. Я робив програму яка виводила б на екрак найбільше парне чисто, маючи наувазі( 3 4 6 8 2 4 7 9 5 4 3 9) то буде число девять 9 бо ми його ввели парне число разів. і я так робив задачу. А насправді треба було щоб на екрані показало найбільше чистояке ділиться на 2. Це набагато легше ніж то шо я робив....
Anonymous #3270882 Рівень 5
1 березня 2023
Проте ви засвоїли гарний урок. Програміст зазвичай обдумує код довше, аніж його пише
Kostiantyn Bogatyrchuk Рівень 14 Expert
8 січня 2023
о тримую помилки: -Програма повинна виводити на екран друге мінімальне число серед уведених цілих чисел. -Якщо введено кілька других мінімальних чисел, потрібно вивести будь-яке з них. хоча у мене у відповіді виходить друге мінімальне число

package ua.javarush.task.pro.task04.task0410;

import java.util.Scanner;

/* 
Друге мінімальне число серед уведених
*/

public class Solution {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int stInt;
        int ndInt;
        int min1 = Integer.MAX_VALUE;
        int min2 = Integer.MAX_VALUE;
        int min3 = 0;
        while (scan.hasNextInt()){
            if (scan.hasNextInt()){
                stInt = scan.nextInt();
                min1 = stInt < min1 ? stInt : min1;
                if (scan.hasNextInt()){
                    ndInt = scan.nextInt();
                    min2 = min2 > ndInt ? ndInt : min2;
                }
                 else {
                     min3 = min1 < min2 ? min2 : min1; 
                     System.out.println(min3);
                     break;
            }}
            else {
                min3 = min1 < min2 ? min2 : min1; 
                System.out.println(min3);
                break;
            }
         }
    }
}