작업을 수행 한 후 “작업 완료”또는 “작업 실패”및 자세한 오류와 같은 피드백을 사용자에게 제공해야하는 콘솔 응용 프로그램이 있습니다.
문제는 “실행”만하면 출력 메시지가 인쇄되지만 콘솔은 잠시 후 닫히고 메시지를 읽을 시간이 없습니다.
내가 기억하는 한, C ++에서 모든 콘솔 애플리케이션은 “종료하려면 아무 키나 누르십시오”또는 이와 유사한 것으로 끝납니다. C #에서는이 동작을
Console.ReadKey();
그러나 Java에서 어떻게 할 수 있습니까? 저는 Scanner 클래스를 사용하고 있지만 “input”이 Scanner 인스턴스라는 점을 감안하면 다음과 같습니다.
input.next()
System.exit(0);
반환을 제외하고는 “모든 키”가 작동합니다. 이것은 여기서 상당히 큰 문제입니다. 포인터가 있습니까?
답변
Java에서 이것은 System.in.read()
답변
일반적으로 콘솔에 연결된 경우에만 프로그램이 기다리기를 원한다고 덧붙이고 싶습니다. 그렇지 않으면 ( 파이프 라인 의 일부인 경우 ) 메시지를 인쇄하거나 대기 할 필요가 없습니다. 이를 위해 다음 Console
과 같이 Java를 사용할 수 있습니다 .
import java.io.Console;
// ...
public static void waitForEnter(String message, Object... args) {
Console c = System.console();
if (c != null) {
// printf-like arguments
if (message != null)
c.format(message, args);
c.format("\nPress ENTER to proceed.\n");
c.readLine();
}
}
답변
Java 콘솔 입력의 문제점은 버퍼링 된 입력이며 계속하려면 Enter 키가 필요하다는 것입니다.
다음 두 가지 논의가 있습니다.
콘솔 앱에서 Java 키보드 입력 구문 분석 및 Java 에서 키보드 방향 키 감지 및 작동
후자는 JLine 을 사용 하여 문제를 해결했습니다.
개인적으로 사용하지 않았습니다.
답변
nextLine();
일시 중지로 사용할 수 있습니다.
import java.util.Scanner
//
//
Scanner scan = new Scanner(System.in);
void Read()
{
System.out.print("Press any key to continue . . . ");
scan.nextLine();
}
그러나 당신이 누르는 모든 버튼은 그 후에 Enter 키를 눌러야 Enter
함을 의미하지만 더 나은 것을 발견했습니다.scan.next();
답변
나는 간단한 해킹을 사용하여 창에 cmd 명령을 사용하도록 요청하고 null로 보냅니다.
// Class for Different hacks for better CMD Display
import java.io.IOException;
public class CMDWindowEffets
{
public static void getch() throws IOException, InterruptedException
{
new ProcessBuilder("cmd", "/c", "pause > null").inheritIO().start().waitFor();
}
}
답변
x4u가 말한 내용을 입력했습니다. 이클립스는 주위에 try catch 블록을 원했기 때문에 그것을 생성하도록했습니다.
try {
System.in.read();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
아마도 모든 종류의 종소리와 휘파람이있을 수 있지만 명령 줄 창을 종료하지 않으려는 초보자에게는 괜찮을 것이라고 생각합니다.
또한 이것이 얼마나 흔한 지 모르겠지만 (이것은 jar 파일을 처음 만드는 것입니다), 자체적으로 실행되지는 않으며 단지 bat 파일을 통해서만 실행됩니다.
java.exe -jar mylibrary.jar
위의 내용은 동일한 폴더에있는 bat 파일입니다. 설치 문제인 것 같습니다.
Eclipse 튜토리얼의 출처 :
http://eclipsetutorial.sourceforge.net/index.html
답변 중 일부는 Oracle Thread 에서 나왔습니다.
답변
public static void main(String args[])
{
Scanner s = new Scanner(System.in);
System.out.println("Press enter to continue.....");
s.nextLine();
}
이것은 nextline
Enter 키를 누를 때마다 다음 줄을 실행하는 데 도움이되므로 꽤 좋은 옵션입니다.