【问题标题】:Write something in output for limited time in java [duplicate]在java中的有限时间内在输出中写一些东西[重复]
【发布时间】:2019-03-18 16:18:29
【问题描述】:

我正在尝试打印一个字符串,仅持续 1 秒。

我找的第一件事是删除一行控制台-终端的方法,但是什么也没找到。

然后尝试退格 5 次,例如“hello”,然后打印另一个字符串,如“ ”以删除 hello 字符串,但我不知道 \b 是如何在 java 中工作的。

现在我很困惑,我该如何解决我的问题。

退格有什么想法吗? 还是删除已经打印的内容?

【问题讨论】:

  • 这不是与 Java 相关的问题,但通常与如何删除控制台上的行有关 - 因此,要做什么或可能做什么取决于所使用的控制台/终端。可能无法只清除一行,因此您也可以尝试清除并重新打印除最后一行以外的所有内容。
  • @Thomas 感谢您的回答。但是我怎样才能清除所有内容呢?
  • 清除所有内容的方式取决于您所指的控制台。 Windows 命令行为此提供了cls 命令,Linux 有clear,其他shell 可能有其他的。

标签: java java-8 console-application


【解决方案1】:

您可以通过在已打印字符串的长度中写入相同数量的回车符 \r 来做到这一点。它会将光标放回原处,但不会清除该行,但是当您写入新字符时,旧字符将被清除。

【讨论】:

  • 由于\r 将光标设置在行首,这有什么关系,您多久打印一次?
【解决方案2】:

我不确定你需要什么,我希望这段代码会有所帮助:

class Main {
  public static void main(String[] args) throws InterruptedException {
    String text = "123456";
    System.out.print(text);
    Thread.sleep(1000); 
    backspace(text.length());
    Thread.sleep(1000);
    System.out.print(text); 
    Thread.sleep(1000);
    arrowLeft(3);
    Thread.sleep(1000);
    System.out.print(text);
  }

  public static void backspace(int number){
    for(int i=0; i<number; i++){
      System.out.print("\b \b");
    }
  }

  public static void arrowLeft(int number){
    for(int i=0; i<number; i++){
      System.out.print("\b");
    }
  }
}

【讨论】:

  • 谢谢,但我的输出与您的确切代码将是:123456 ???? 123456????123456。 Eclipse 无法识别 \b。我不知道为什么
  • @SinaAbbasi 查看与您重复的问题中的top-rated answer
  • @Benfarhat 是的,你的权利。显然我的日食有问题。
  • 使用终端或命令提示符看看是否有效
  • @SinaAbbasi 尝试使用它们的 ASCII 等价物 \b -> \010 \t -> \011 \f -> \014 \r -> \015 否则,它似乎是一个“更多超过 10 年未解决 bug" 与 Eclipse IDE
猜你喜欢
  • 2021-06-18
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
  • 1970-01-01
  • 2013-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多