#java
#java
Вопрос:
Я пытаюсь создать консольное приложение, в котором требуется команда и печать некоторого вывода, я включил команду печати, теперь хочу включить команду выхода, которая завершит работу сканера. Как я могу этого добиться?
import java.text.SimpleDateFormat;
import java.util.*;
public class Main {
public static void main(String[] args) {
while (true) {
Scanner myObj = new Scanner(System.in); // Create a Scanner object
System.out.println("");
String output = getCommand(myObj);
System.out.println(output);
}
}
private static String getCommand(Scanner myObj) {
List help = new ArrayList();
help.add("print");
if (myObj.nextLine().equals("print")) {
return "Hello World";
} else if (myObj.nextLine().equals("time")) {
return new SimpleDateFormat("hh:mm a").toString();
} else if (myObj.nextLine().equals("exit")) {
// exit the console
}
return Arrays.asList(help).toString();
}
}
Комментарии:
1. Подсказка: создайте свой сканер перед запуском цикла в main. В противном случае вы просто создаете много сканеров и в конечном итоге можете вызвать проблемы с памятью, если используете программу достаточно долго (хотя это может занять время жизни).
Ответ №1:
Вот один из способов. Верните null
, если пользователь вводит exit
, а затем проверьте это в main
и выполните a break
для выхода из основного цикла:
public class Test {
public static void main(String[] args) {
while(true) {
Scanner myObj = new Scanner(System.in); // Create a Scanner object
System.out.println("");
String output = getCommand(myObj);
if (output == null)
break;
System.out.println(output);
}
}
private static String getCommand(Scanner myObj) {
List help = new ArrayList();
help.add("print");
if(myObj.nextLine().equals("print")){
return "Hello World";
}else if(myObj.nextLine().equals("time")){
return new SimpleDateFormat("hh:mm a").toString();
}else if(myObj.nextLine().equals("exit")){
return null;
}
return Arrays.asList(help).toString() ;
}
}
Другим способом было бы просто вызвать:
System.exit(0); (instead of doing `return null;`)
как только ваш тест exit
завершится успешно.