Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 11.10.2017
Сообщений: 2

Цикл прокручивается несколько раз, вместо одного

11.10.2017, 22:09. Показов 1173. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер. Недавно начал изучать Java. Написал простенькую программу с "System.in.read()" и циклом "do-while". Сразу же возник такой вопрос, цикл повторяется несколько раз при нажатии клавиши "enter (после ввода числа с клавиатуры)". Как это исправить ?

Вот что выдаёт в консоли.

Угадайте загаданное число...
10
Ваше число < Ответ
Угадайте загаданное число...
Ваше число < Ответ
Угадайте загаданное число...
Ваше число < Ответ
Угадайте загаданное число...
3
Поздравляем вы угадали !!!

Цикл повторяется почему-то 3 раза. Один раз добился результата что он повторялся 2 раза.
Код прилагаю
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Main {
 
    public static void main(String[] args)
        throws java.io.IOException{
            char ch = '3';
            char x;
            do{
             System.out.println("Угадайте загаданное число...");
                x = (char) System.in.read();
                if(x>ch){
                    System.out.println("Ваше число > Ответ");
                }
                if(x<ch){
                    System.out.println("Ваше число < Ответ");
                }
            } while(x != ch);
            System.out.println("Поздравляем вы угадали !!!");
 
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.10.2017, 22:09
Ответы с готовыми решениями:

Цикл for выполняется 1 раз вместо двух!!!
непонятно, добавил нужное условие, но цикл выполняется ТОЛЬКО 1 раз, хотя по условию должен выполняться 2 раза $c =...

Выводится несколько рейсов вместо одного
Доброго вечера форумчане! Есть такой вопрос: не могу понять, почему при поиске рейса по номеру рейса и дате рейса выводит несколько заявок,...

Цикл выполняется один раз вместо нескольких
Есть папка с 354 файлами Нужно,чтобы стало 299 void Data::renewFiles() { QDir dir; dir.cd(QDir::currentPath() +...

4
25 / 25 / 31
Регистрация: 04.10.2016
Сообщений: 85
11.10.2017, 22:36
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static void main(String[] args) throws IOException {
        char ch = '3';
        char x, z, c;
        do {
            System.out.println("Угадайте загаданное число...");
            x = (char) System.in.read();
            z = (char) System.in.read();
            c = (char) System.in.read();
            if (x > ch) {
                System.out.println("Ваше число > Ответ");
            }
            if (x < ch) {
                System.out.println("Ваше число < Ответ");
            }
        } while (x != ch && z != '\n' && c != '\r');
        System.out.println("Поздравляем вы угадали !!!");
 
    }
0
0 / 0 / 0
Регистрация: 11.10.2017
Сообщений: 2
11.10.2017, 22:46  [ТС]
Теперь выводит следующее:

Угадайте загаданное число...
7 // Ввёл "7" нажал enter и оно видимо просит ввести ещё число
4 // Ввожу любое число в итоге оператор if работает с первым введённым числом, а на второе и вовсе заканчивает
выполнение программы

Ваше число > Ответ
Поздравляем вы угадали !!!
0
502 / 348 / 134
Регистрация: 14.06.2016
Сообщений: 669
11.10.2017, 23:54
Вставь строчку
Java
1
System.in.skip(System.in.available());
перед
Java
1
x = (char) System.in.read();
в своем варианте.

Вообще, есть Scanner.
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
12.10.2017, 10:13
Dkato,

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
        int num = 3;
        int tmp;
        
        do  {
            System.out.println("Угадайте загаданное число...");
            
            tmp = in.nextInt();
            
            if  (tmp > num){
                System.out.println("Ваше число > Ответ");                
            }
            
            if  (tmp < num){                       
                System.out.println("Ваше число < Ответ");
            }
        } while (tmp != num);
                
        System.out.println("Поздравляем вы угадали !!!");
    
        in.close();
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.10.2017, 10:13
Помогаю со студенческими работами здесь

Цикл выполняется один раз вместо нескольких
Есть папка из 354 файлов,нужно,чтобы осталось 299 void Data::renewFiles() { QDir dir; dir.cd(QDir::currentPath() +...

Почему цикл повторяется 3 раза вместо одного
Доброго времени суток участникам форума. Недавно начал изучать язык С#.И возникла проблема с кодом. while (player&gt;1) { ...

Картинки выводятся по нексколько раз вместо одного
Всем доброго времени суток! Столкнулся с такой проблемой, картинки выводятся по нексколько раз вместо одного, подскажите, как исправить? ...

Происходит несколько редиректов 301 вместо одного
Здравствуйте. Проблема следующего характера. Сайт переехал на новый движок. С вордпресса на модекс. Ссылки очень сильно отличаются, поэтому...

Вместо создания одного массива создает несколько
Здравствуйте. Простите за наглость но задам два вопроса. 1 Вместо одного массива создает несколько. Вот сам код: $array =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru