Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для Atom77
1 / 1 / 0
Регистрация: 25.01.2016
Сообщений: 61

Танцы с бубном или точнее с if

14.02.2016, 20:53. Показов 2236. Ответов 32

Студворк — интернет-сервис помощи студентам
В общем я опять с if заморачиваюсь. Все вроде работает, кроме нажатия клавиши "d", не возвращается к началу программы. Если вставить рекурсив (main(args)), то можно вернуться и продолжить, но тогда выход не работает из программы. Что же нужно добавить, чтобы все работало? Напишите пожалуйста.
Вот код:
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
25
26
27
28
29
30
31
32
33
34
import java.util.Scanner;
 
/**
 * Created by Атом on 14.02.2016.
 */
public class Main3 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Угадайте число от 1 до 3");
        for (; ; ) {
 
            int num = scanner.nextInt();
            int n = (int) (Math.random() * 3);
            if (num == n) {
                System.out.println("Правильно! Вы угадали число:" + n);
                System.out.println("Вы хотите продолжить?\nДа введите: d\nНет введите n:");
                String chars = scanner.nextLine();
                while (!chars.equals("d") && !chars.equals("n")) {// Проверка
                   chars = scanner.nextLine();
                }
                if ("d".equals(chars)) {
                    System.out.println();
//                    main(args); - если включить рекурсив, тогда выход не работает
                }
                else if ("n".equals(chars)) {
                    System.out.println("До свиданья");
                    break;
                }
            }
            else System.out.println("Увы, вы не угадали, коьпьютер загадал число:"+n+".\n Попробуйте еще раз");
 
        }
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.02.2016, 20:53
Ответы с готовыми решениями:

Удаленный рабочий стол или танцы с бубном!
Вобщем такая ситуация! Дома имеется 2 компа один монитор и ноутбук. Все это соединено через роутер Netgear wgr612 (ноут через wifi). Один...

чем грузится память или танцы с бубном часть вторая.
Всем здрасьте, это снова я! вообщем я тут провел профилактику памяти, решил отмониторить загрузку (раньше все время была загрузка больше...

Танцы с бубном
Сегодя часа два назад меня просто убили следующей новостью: У нас утреннем развозе проставились не закупочные цены вместо продажных....

32
32 / 32 / 22
Регистрация: 29.10.2015
Сообщений: 195
14.02.2016, 23:27
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Atom77 Посмотреть сообщение
liptonus777, а вот еще вопрос, вот прога немного не так работает у вас, как в вечном массиве. У вас после ввода цифры сразу спрашивает, будете продолжать или нет? А в вечном массиве, пока человек не угадает, прога выбор не делает. Вот в вашем варианте так можно сделать?
Не понял немного
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
14.02.2016, 23:30
Цитата Сообщение от Левиафам Посмотреть сообщение
зачем для сравнения equals применять???
потому что ваш вариант с intern тут совершенно неуместен.
0
 Аватар для Atom77
1 / 1 / 0
Регистрация: 25.01.2016
Сообщений: 61
14.02.2016, 23:33  [ТС]
KEKCoGEN, Левиафам обещал завтра показать.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
14.02.2016, 23:37
Atom77, полагаю он покажет реазизацию с == и intern которая как я уже сказал тут ниразу не нужна. Вариантов тут немного.
0
 Аватар для Atom77
1 / 1 / 0
Регистрация: 25.01.2016
Сообщений: 61
14.02.2016, 23:42  [ТС]
liptonus777, Вот смотрите. в моем варианте программа не предлагает выбор продолжить или выйти пока пользователь не угадает число компа, а в вашем варианте после каждого ввода цифры комп предлагает выйти из программы или продолжить. Вот как у меня нужно, но только в вашем варианте.
0
32 / 32 / 22
Регистрация: 29.10.2015
Сообщений: 195
14.02.2016, 23:48
Лучший ответ Сообщение было отмечено Atom77 как решение

Решение

Atom77,
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
25
26
27
28
29
import java.util.Scanner;
 
public class CyberForum {
 
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        boolean end = false;
 
        do {
            System.out.println("Угадайте число от 1 до 3");
            int n = (int) (Math.random() * 3) + 1 ;
            int num = scanner.nextInt();
            if(num == n) {
                System.out.println("Правильно! Вы угадали число: " + n);
                String chars;
                do {
                    System.out.println("Вы хотите продолжить?\nДа введите: d\nНет введите n: ");
                    chars = scanner.next();
                } while (!(chars.equals("n") || chars.equals("d")));
                if (chars.equals("n")) {
                    end = true;
                    System.out.println("Досвиданья");
                }
            } else {
                System.out.println("Увы, вы не угадали, компьютер загадал число: " + n + "\nПопробуйте ещё раз");
            }
        } while (!end);
    }
}
1
 Аватар для Atom77
1 / 1 / 0
Регистрация: 25.01.2016
Сообщений: 61
14.02.2016, 23:50  [ТС]
liptonus777, класс. Благодарю. Все тема закрыта.
0
 Аватар для HOBATOP
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
15.02.2016, 02:36
Atom77, ну закрыта так закрыта... А если захочется логику игры поменять? Человек против человека, компьютер против компьютера вести счёт побед и проигрышей, задавать имена игрокам? Каждый раз всё заново переписывать? Разбивайте код на маленькие задачи так, чтобы при изменении в одном месте не приходилось менять в других. В порядке хулиганства вот такой вариант:
Кликните здесь для просмотра всего текста
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
public class УгадайЧисло {
 
    //создадим метод для ввода
    public static Scanner ввод() {
        Scanner сканер = new Scanner(System.in);
        return сканер;
    }
 
    //запросим у игрока ввод числа
    public static int числоИгрока() {
        System.out.println("Введите число от 1 до 3 включительно");
        return ввод().nextInt();
    }
 
    //запросим у игрока решение о продолжении игры
    public static int решениеИгрока() {
        System.out.println("Если хотите продолжить нажмите любую клавишу, для выхода - q");
        return (ввод().nextLine().equals("q")) ? 1 : -1;
    }
 
    //создадим игровую ситуацию
    public static int числоКомпьютера() {
        return (int) (Math.random() * 3 + 1);
    }
 
    //логика игры первый вариант
//    public static void логика() {
//        int компьютер = числоКомпьютера(), игрок = числоИгрока();
//        String результат = компьютер == игрок ? "Вы угадали!" : "Вы не угадали. Было задано число " + компьютер;
//        System.out.println(результат);
//    }
 
    //логика игры второй вариант число компьютера не меняется
//    public static void логика() {
//        int компьютер = числоКомпьютера(), игрок;
//        while (true) {
//            игрок = числоИгрока();
//            if (компьютер == игрок) {
//                System.out.println("Вы угадали!");
//                break;
//            } else {
//                System.out.println("Вы не угадали. Попробуйте ещё раз");
//            }
//        }
//    }
 
    //логика игры третий вариант число компьютера меняется
    public static void логика() {
        int компьютер, игрок;
        while (true) {
            компьютер = числоКомпьютера();
            игрок = числоИгрока();
            if (компьютер == игрок) {
                System.out.println("Вы угадали!");
                break;
            } else {
                System.out.println("Вы не угадали. Было загадано число " + компьютер + ". Попробуйте ещё раз");
            }
        }
    }
 
    public static void main(String[] args) {
        System.out.println("Игра "Угадай число"");
        логика();
        while (true) {
            if (решениеИгрока() < 0) {
                логика();
            } else {
                System.out.println("Спасибо за игру, до свидания!");
                break;
            }
        }
    }
}

Для проверки как чего работает раскомментировать одни части и закомментировать другие не очень же сложно?
P.S.: в идешку можно код загонять прямо так, хоть он и выглядит слегка нестандартно.
1
 Аватар для Atom77
1 / 1 / 0
Регистрация: 25.01.2016
Сообщений: 61
15.02.2016, 07:53  [ТС]
HOBATOP, не знал, что методы можно кириллицей прописывать. Довольно все понятно и разборчиво, а главное на русском. Теперь тоже буду пробовать на русском, а то самодокументирующий код на английском мне тяжеловат. Спасибо, вы профи, это факт.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
15.02.2016, 09:07
Цитата Сообщение от Atom77 Посмотреть сообщение
Теперь тоже буду пробовать на русском
я бы на вашем месте даже не думал об этом варианте. Код на русском это очень плохо не только стиллистически, но и потенциально приведет вас в багам в будущем.
0
 Аватар для Atom77
1 / 1 / 0
Регистрация: 25.01.2016
Сообщений: 61
15.02.2016, 09:12  [ТС]
KEKCoGEN, Я думал об этом и не раз слышал. Но Новатор убедил меня в обратном. Я проверил его код отлично работает, только кавычку нужно подправить в 63 строке . В любом случае, всегда самокомментирующий код можно заменить на другую раскладку.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
15.02.2016, 09:54
Цитата Сообщение от Atom77 Посмотреть сообщение
Я проверил его код отлично работает
если вы собираетесь писать программы не намного сложнее той что написанна выше, тогда можете хоть на китайском писать. Проекты сложнее с использованием сторонних фреймворков не будут корректно работать на других раскладках.
0
 Аватар для HOBATOP
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
15.02.2016, 10:39
Atom77,
Цитата Сообщение от Atom77 Посмотреть сообщение
вы профи, это факт
профи - это тот, кто имеет основной источник дохода от какого-то вида деятельности. От изучения Java я не получаю ни каких материальных выгод, может быть в будущем и задумаюсь о смене рода деятельности, но пока что нет. На сегодняшний день у меня другой вид деятельности. Писать кириллицей в принципе можно, но
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
Проекты сложнее с использованием сторонних фреймворков не будут корректно работать
данное замечание абсолютно верно, я бы только уточнил: "могут работать некорректно" далеко не факт что они все, прям поголовно, не будут воспринимать кириллицу. А для себя, или
Цитата Сообщение от HOBATOP Посмотреть сообщение
В порядке хулиганства
вполне допустимо.
Цитата Сообщение от Atom77 Посмотреть сообщение
подправить в 63 строке
да, действительно, кавычки нужно экранировать, не заметил. Сделайте так:
Java
1
System.out.println("Игра \"Угадай число\"");
и с кавычками будет всё в порядке.
P.S.: а может и не забыл: это на сайте отображение одинарного "\" почему-то фильтруется...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.02.2016, 10:39
Помогаю со студенческими работами здесь

Надоели танцы с бубном
Всем доброго времени суток. Суть проблемы: имеется локальная сеть из 16 компов,1 выступает в роли сервера и через него остальные выходят в...

Почтовая БД - танцы с бубном
Странное дело начало происходить с моей почтовой БД. В один день пропали все входящие из папки &quot;Инбокс&quot;. Фиксап, сжатие не...

Curl и парсинг, танцы с бубном
Доброго вечера, форумчане. Для себя и, возможно, друзей-знакомых, решил написать простенький проектик. Суть в том, чтобы с часто...

EFI на ноутбуке и танцы с бубном
Добрый день, появилась необходимость переустановить ОС на ноутбуке, который использует EFI. В силу того, что единственный флеш-накопитель...

Танцы с бубном вокруг озу
Есть мат. плата - P8H61-V Есть две планки Crucial BLS4G3D13390S1S00 Ballistix по 8Gb Вставляю планку №1 в слот №1 - биос видит 8 гиг ...


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

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru