【问题标题】:Java terminal program output on single lineJava 终端程序输出单行
【发布时间】:2013-12-23 10:40:29
【问题描述】:

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

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

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

Test 1
Test 2

有人知道解决这个问题的简单方法吗?

【问题讨论】:

  • 你按什么继续?
  • 只能按回车继续。
  • 你在使用 Eclipse 吗?
  • 我使用 eclipse 只是为了编写代码,但 OSX 终端是应用程序的目标环境。

标签: java shell terminal


【解决方案1】:

我的解决方案是使用 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");
}

感谢大家的帮助。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 不是问题所在。操作员想知道如何在同一行上有多个输入。
    【解决方案3】:

    简单地说

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

    【讨论】:

      【解决方案4】:

      我认为唯一可能的方法是使用退格键,但 \b 在 Eclipse 控制台中不起作用。 How to get backspace \b to work in Eclipse's console?如果你没用过Eclipse,可以用退格键试试。

      【讨论】:

        猜你喜欢
        • 2023-03-10
        • 2013-05-09
        • 2019-03-03
        • 2014-02-02
        • 2014-12-21
        • 2014-02-09
        • 2019-03-30
        • 1970-01-01
        • 2020-04-01
        相关资源
        最近更新 更多