Как сделать чтобы программа не закрывалась после выполнения java

Как сделать так, чтобы консоль не закрывалась после завершения программы на 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

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru