【问题标题】:Trying to clear screen in java试图在java中清除屏幕
【发布时间】:2018-07-25 04:13:36
【问题描述】:

我正在从包含多个 '\n' 的服务器打印单个字符串,并希望在每条新消息之前清除屏幕。但是,以下代码会导致在单个字符串中的每一行之后清除屏幕。

while (true) {
    String s = server.readLine(); 

    if (s == null) {
      throw new NullPointerException();
    } 
    ConsoleCleaner.clean();
    System.out.println(s.toString());

  }

同样,s 是一个单独的字符串,其中包含多个 '\n' 导致打印一行并且每次都清除屏幕。

【问题讨论】:

  • 你确定readLine() 没有根据它找到的下一个\n 返回一行吗?
  • 你为什么打电话给String::toString()

标签: java readline


【解决方案1】:

我假设server 在这里是BufferedReader,因为您没有另外指定。对于BufferedReader.readLine() 而言,没有“单个字符串与多个\n”之类的东西。当方法遇到第一个\n时,就是readLine()的输出。

您可以通过跟踪打印的最后一条消息的非空白长度来避免此问题,并且仅在它非零时清除屏幕。

【讨论】:

    【解决方案2】:

    您能否修改此示例以满足您的要求?

    Read all lines with BufferedReader

    大概是这样的:

    String s;
    while ((line = server.readLine()) != null) {
        s += line + (System.getProperty("line.separator"));
    }
    ConsoleCleaner.clean();
    System.out.println(s.toString());
    

    这个没试过……

    【讨论】:

    • 请注意,这应该删除所有新行
    • 这是一个很好的观点,我添加了一个行分隔符,我不太喜欢先清理控制台然后在读取行时打印这些行可能会更好,但没有更多上下文它是很难知道这是否合适......
    猜你喜欢
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    相关资源
    最近更新 更多