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

Реализовать выход из программы правильно

16.02.2016, 19:52. Показов 4006. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Все работает нормально, кроме выхода из проги. Что бы выйти пользователь должен нажать на клавишу "n" после Enter аж два раза. Пробовал избавиться от Enter, но у меня не получилось. В общем нужно, чтоб с одного клика программа выходила.
import java.util.Scanner;

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
import java.util.Scanner;
 
public class Logica2 {
    public static Scanner vvod() {
        Scanner scanner = new Scanner(System.in);
        return scanner;
    }
 
    public static int intUser() {
        System.out.println(" Введите число от 1 до 3");
        return vvod().nextInt();
    }
 
    public static int intComp() {
        return (int) (Math.random() * 3 + 1);
    }
 
    public static void logica() {
        int comp, user;
        while (true) {
            comp = intComp();
            user = intUser();
            if (comp == user) {
                System.out.println(" Правильно, вы угадали");
                break;
            } else {
                System.out.println(" Не угадали, компьютер загадал число " + comp);
            }
        }
    }
 
    public static int decisionPlayer() {
        System.out.println(" Если хотите продолжить жмите d, хотите выйти жмите n");
        int decision = 0;
        String temp = vvod().nextLine();
//        if (temp != "10") {// Пробуем избавиться от Enter
        if (temp.equals("d")) decision = 1;
        if (temp.equals("n")) decision = -1;
        else if (!temp.equals("d") && !temp.equals("n")) {
            System.out.println(" Вы ошиблись с выбором, повторите свой выбор");
            return decisionPlayer();
        }
//        }
        return decision;
    }
 
    public static void main(String[] args) {
        System.out.println(" Угадай число");
        logica();
        while (true) {
            if (decisionPlayer() == 1) {
                logica();
            } else if (decisionPlayer() == -1) {
                System.out.println(" Вы вышли из программы");
                break;
            }
        }
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.02.2016, 19:52
Ответы с готовыми решениями:

Как правильно реализовать логику программы?
Здравствуйте! Хочу реализовать такую логику программы: телефон - стартовая активность А -> активность Б и т. д.; планшет: стартовая...

Реализовать выход из функции
Есть 2 функции, нужно реализовать выход из этих фукнций, если я кликнул на элемент который вызывлся(Но никак не завершил работу другого...

Как правильно реализовать доступ во внутреннюю (корпоративную) сеть из внешней и реализовать аутентификацию
Доброго времени суток. Вобщем суть вопроса... есть настроенный в корпоративной среде Sql Server Reporting Service (сервер отчетов) на...

3
 Аватар для Lumber
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
16.02.2016, 20:00
Лучший ответ Сообщение было отмечено Atom77 как решение

Решение

Вот здесь:

Java
1
2
3
4
5
6
7
while (true) {
    if (decisionPlayer() == 1) {
                logica();
            } else if (decisionPlayer() == -1) {
                System.out.println(" Вы вышли из программы");
                break;
}
decisionPlayer() вызывается дважды.

может вот так:

Java
1
2
3
4
while (decisionPlayer() == 1) {
    logica();
}
System.out.println(" Вы вышли из программы");
1
 Аватар для Atom77
1 / 1 / 0
Регистрация: 25.01.2016
Сообщений: 61
16.02.2016, 20:07  [ТС]
Lumber, спасибо заработало. А еще какие нибудь варианты есть?
0
 Аватар для Lumber
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
17.02.2016, 01:05
ещё в decisionPlayer() рекурсия ненужная.
по два раза проверяется temp.equals("d"), temp.equals("n").
Scanner каждый раз новый создаётся.
из main() logica() вызывается дважды.

Несколько изменил прогу:

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
import java.util.Scanner;
 
public class Main {
    static Scanner scanner = new Scanner(System.in);
 
    public static void main(String[] args) {
        System.out.println(" Угадай число");
 
        do {
            logica();
        } while (decisionPlayer());
 
        System.out.println(" Вы вышли из программы");
    }
 
    public static void logica() {
        boolean isWrongAnswer;
        do {
            int comp = intComp();
            int user = intUser();
            isWrongAnswer = (comp != user);
 
            String message = isWrongAnswer ? " Не угадали, компьютер загадал число " + comp : " Правильно, вы угадали";
            System.out.println(message);
        } while (isWrongAnswer);
    }
 
    public static int intUser() {
        System.out.println(" Введите число от 1 до 3");
        String inputString;
        do {
            inputString = scanner.nextLine();
        } while (inputString.isEmpty());
        return Integer.parseInt(inputString);
    }
 
    public static int intComp() {
        return (int) (Math.random() * 3 + 1);
    }
 
    public static boolean decisionPlayer() {
        System.out.println(" Если хотите продолжить жмите d, хотите выйти жмите n");
 
        boolean continueGame = false, wrongAnswer;
        do {
            wrongAnswer = false;
            String temp = scanner.nextLine();
 
            switch (temp) {
                case "d":
                    continueGame = true;
                case "n":
                    break;
                default:
                    System.out.println(" Вы ошиблись с выбором, повторите свой выбор");
                    wrongAnswer = true;
            }
        } while (wrongAnswer);
 
        return continueGame;
    }
}
Ещё нужно проверку сделать на то что при запросе числа вводится именно число (и диапазон можно проверить от 1 до 3).
Сейчас если букву ввести, то прога падает.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.02.2016, 01:05
Помогаю со студенческими работами здесь

Как реализовать выход из системы
Пишу службу, которая при получении конкретных значений по сети выключает/перезагружает компьютер. Хотелось бы добавить выход из системы....

как реализовать выход с сайта?
у меня почему то ничего не происходит, вообще. сама кнопка выхода <form action="exit.php" method="get"> ...

Как реализовать выход с сайта?
У меня есть админка, как ставить там кнопку, чтобы по нажатии вышли с админки (сессия остановилась) Заранее спасибо.

Реализовать выход с сайта session
Есть ссылка на выход: <li><a href="logout.php">Exit</a></li> Код пхп: session_start(); $_SESSION = array(); session_destroy();...

Как реализовать выход из таймера?
Предупреждаю,код очень плох, я начинающий. Прошу помочь отредактировать. Необходимо с течением времени уменьшать переменную, пока она не...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
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 Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru