Как сделать так, чтобы консоль не закрывалась после завершения программы на Java?
mikigal 30 Окт 2015 в 19:39
Я использую IntelliJ IDEA, но я скомпилирую приложение в файл jar.
30 Окт 2015 в 19:41
Установить точку останова на последней закрывающей фигурной скобке main() ?
Sergey Kalinichenko
30 Окт 2015 в 19:42
Это не работает. мне нужен код
30 Окт 2015 в 19:46
Хорошо, вы запускаете класс в IntelliJ и ожидаете каких-то результатов на консоли IntelliJ? Или вы запускаете банку, возможно, используя командную строку Windows?
30 Окт 2015 в 19:56
4 ответа
public static void main (String[] args) throws IOException
Willi Mentzel 13 Янв 2021 в 14:30
Самый простой способ нашел:
Scanner scanner = new Scanner(System.in); scanner.nextLine();
Ruben 8 Окт 2016 в 03:11
Есть несколько способов добиться этого.
- Вы можете запросить ввод данных пользователем в конце вашего метода main .
- Вы можете создать и запустить поток. Потоки Deamon автоматически закрываются, когда ваш основной метод завершает работу. Однако потоки, не являющиеся демонами, будут поддерживать ваше приложение до тех пор, пока они не будут завершены.
- Или просто вызовите wait для объекта.
Однако я не уверен, зачем вам поддерживать приложение в рабочем состоянии, если оно больше ничего не делает.
Командная строка закрывается после выполнения команды (Решение)
Использование потока, отличного от демона:
Вызов ожидания для объекта:
public static void main(String[] args)throws Exception < Object o = new Object(); synchronized (o) < o.wait(); >>
bvdb 30 Окт 2015 в 22:15
Запуск пустого ввода Scanner в конце кода работает каждый раз, потому что сканер ждет, пока пользователь нажмет ENTER.
//to-do your code Scanner.nextLine();
Shame Java не имеет встроенной команды ожидания или паузы для консольных приложений.
РЕДАКТИРОВАТЬ: Если вы хотите построить сканер, вы делаете это следующим образом:
Scanner scanner = new Scanner(System.in); scanner.nextLine();
System.in — это параметр, который сообщает сканеру, какой входной поток использовать.
Источник: question-it.com
Как сделать чтобы программа на java не закрывалась автоматически после открытия .bat файла?
Программа генерирует название электронной почты и случайный пароль для нового сотрудника. В среде разработки в консоли программа хорошо отрабатывает, но мне нужно сделать в идеале,чтобы был файл, например .exe , при двойном клике мыши он открывается и выполняется эта программа.
Я создал jar файл в среде разработки Intelij IDEA, но он не запускается, поэтому я сделал .bat файл, в котором прописал следующее:
start java -jar EmailApp.jar .bat
Файл запускается, НО! Как только я нажимаю клавишу, программа сразу закрывается, а мне нужно,чтобы программа не закрывалась и показала мне данные.
Как сделать чтобы консоль Python не закрывалась
Клавишу я нажимаю, чтобы сделать выбор, к какому департаменту относится сотрудник, и дальше уже идёт следующее выполнение программы.
В идеале должен получится один файл, который выполняет программу(показывает созданный email и пароль на экране)
Главный класс EmaillApp:
package emailapp; public class EmailApp < public static void main(String[] args) < Email em1 = new Email(«Petya», «Ivanov»); System.out.println(em1.showInfo()); >>
Класс Email:
Ответы (4 шт):
Не нужны вам bat’ники. Просто добавьте в саму программу ожидание реакции от пользователя:
public class EmailApp < public static void main(String[] args) < Email em1 = new Email(«Petya», «Ivanov»); System.out.println(em1.showInfo()); System.out.println(«Press ENTER to continue»); System.console().readLine(); >>
Вам нужно дожидаться ввода пользователя и обрабатывать его.
В Java для этого нужно считать данные из System.in используя метод, который блокирует исполнение, наприрмер, с помощью Scanner :
. System.out.println(em1.showInfo()); Scanner scanner = new Scanner(System.in); scanner.nextLine();
Можно это сделать и непосредственно в *.bat файле, с помощью pause :
start java -jar EmailApp.jar pause
На основной вопрос уже ответили, я же отвечу на вопрос автора топика из комментариев:
Подскажите ещё как можно сделать так,чтобы после того как программа отработала, мне выплыло сообщение о том, хочу ли я снова создать email и прочие данные(запустить программу снова) и программа запустилась ещё раз?
Я не настоящий сварщик, тоже совсем недавно начал знакомиться с Java, но в примере показал, как воспользоваться бесконечным циклом для вашей программы, а дальше можно под свои нужды отредактировать. Правда, немного увлекся.
package emailapp; import java.util.ArrayList; import java.util.Scanner; public class EmailApp < // Один объект сканнер на всю программу, который закрываем перед выходом по EXIT static Scanner sc = new Scanner(System.in); // В этом методе создаем Email объект private static Email createEmail() < String firstName = «»; String lastName = «»; System.out.println(«Enter the name: «); firstName = sc.nextLine(); System.out.println(«Enter the last name: «); lastName = sc.nextLine(); return new Email(firstName, lastName); >public static void main(String[] args) < // Список, куда будем добавлять элементы и сразу выводить на экран ArrayListlist = new ArrayList<>(); // Счетчик для списка int cycleCount = 0; System.out.println(«Let’s create some emails!n»); // Эта конструкция служит бесконечным циклом. Ее можно переписать на (int i = 0; ; i++) и заменить cycleCounter на i, суть та же while(true) < Email em = createEmail(); // Создаем Email list.add(cycleCount, em); // Добавляем в лист System.out.println(list.get(cycleCount).showInfo()); // Показываем по нему инфо cycleCount++; // Итерируем счетчик // Если на этом моменте ввести EXIT, то цикл завершится и программа закроется.
Можно вводить любую строчку, // кроме EXIT, чтобы цикл начался заново System.out.println(«Do you want to create a new worker? Enter YES to continue or EXIT to exit»); if («exit».equalsIgnoreCase(sc.nextLine())) < sc.close(); System.exit(0); >> > >
. try (Scanner scanner = new Scanner(System.in)) < scanner.nextLine(); >.
. try < System.console().readLine(); >catch (Exception e) < e.printStackTrace(); >.
Источник: husl.ru
Как вы удерживаете консоль от закрытия после завершения программы?
Как вы удерживаете консоль от закрытия после выполнения программы на Java?
user5339374 30 окт ’15 в 16:39 2015-10-30 16:39
2015-10-30 16:39
4 ответа
readLine() ждет, пока вы не нажмете клавишу:
public static void main (String[] args) throws IOException
user1788806 01 ноя ’15 в 20:26 2015-11-01 20:26
2015-11-01 20:26
Самый простой способ, который я нашел:
Scanner scanner = new Scanner(System.in); scanner.nextLine();
user3167790 08 окт ’16 в 00:11 2016-10-08 00:11
2016-10-08 00:11
Есть несколько способов добиться этого.
- Вы можете запросить пользователя для ввода в конце вашего main метод.
- Вы можете создать и запустить тему. Потоки Deamon автоматически закрываются, когда ваш основной метод заканчивается. Тем не менее, потоки не-deamon будут поддерживать ваше приложение до завершения.
- Или просто позвоните wait на объекте.
Я не уверен, однако, почему вы хотели бы сохранить приложение в живых, если оно больше ничего не делает.
Использование не-deamon потока:
Вызов ожидания на объекте:
public static void main(String[] args)throws Exception < Object o = new Object(); synchronized (o) < o.wait(); >>
user1833961 30 окт ’15 в 19:10 2015-10-30 19:10
2015-10-30 19:10
Стрельба пустая Scanner ввод в конце кода работает каждый раз, потому что сканер ждет, пока пользователь нажмет ENTER.
//to-do your code Scanner.nextLine();
Позор Java не имеет встроенной команды ожидания или паузы для консольных приложений.
РЕДАКТИРОВАТЬ: Если вы хотите построить сканер, вы делаете это так:
Scanner scanner = new Scanner(System.in); scanner.nextLine();
System.in это параметр, который сообщает сканеру, какой входной поток использовать.
Источник: stackru.com