Java终端程序单行输出

时间:2013-12-06 06:49:42

标签: java shell terminal

我正在创建一个java应用程序,在执行期间的某个时刻需要通过刷新在一行上显示多个输出。它需要显示每个输出等待用户确认。我一直坚持如何暂停输出直到输入被按下。使用以下方法:

System.out.print("Test 1\r");
System.in.read();
System.out.print("Test 2\r");

但是当我使用这种方法时,光标会跳到一个新的行,就像这样

Test 1
Test 2

有没有人知道这方面的轻松解决方法?

4 个答案:

答案 0 :(得分:2)

我的解决方案是使用ANSI,因为它受OSX终端的支持。在我的scanner.next()后,我打印了一个:“1A”ANSI字符,将光标向上移动一行,然后使用“\ r”将行返回到行的开头。以下是代码的外观:

for(int i = 0; i<numTimesToRepeat; i++){    
    System.out.print("Print line " + i);
    System.in.read();
    System.out.print("\u001b[1A");
    System.out.print("\r");
}

感谢所有人的帮助。

答案 1 :(得分:0)

唯一可行的方法是使用退格程序,我认为,但\b在eclipse控制台中没有用。 How to get backspace \b to work in Eclipse's console?如果你没有使用Eclipse,你可以尝试使用退格程序。

答案 2 :(得分:0)

如果您想从控制台获取输入,请使用System.out.println()打印输出并使用BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

答案 3 :(得分:0)

简单地说

System.out.println("\nPress <Enter> to continue...");
System.in.read();