当前位置:  开发笔记 > 编程语言 > 正文

如何在控制台中返回到行的开头?

如何解决《如何在控制台中返回到行的开头?》经验,为你挑选了2个好方法。

如何返回到行的开头并覆盖控制台上已输出的内容?以下似乎不起作用:

System.out.print(mystuff+'\r');

mtruesdell.. 37

我怀疑你的光标正在移动到行的前面.你已经拥有的文字并没有消失,因为你没有用任何东西覆盖它.您可以输出空格以清空该行,然后添加另一个\ r.

我刚刚在Windows XP和AIX上测试了以下内容,它按预期工作:

public class Foo {
  public static void main(String[] args) throws Exception {
   System.out.print("old line");
   Thread.sleep(3000);
   System.out.print("\rnew");
  }
}

我打印"旧线",延迟3秒,然后"旧线"变为"新线"

我故意使第一行比第二行更长,以证明如果你想要删除整行,你必须用空格覆盖末尾.

另请注意,"\ b"转义序列将备份1个空格,而不是行的开头.所以如果你只想删除最后2个字符,你可以写:

System.out.println("foo\b\bun")

并获得"乐趣".



1> mtruesdell..:

我怀疑你的光标正在移动到行的前面.你已经拥有的文字并没有消失,因为你没有用任何东西覆盖它.您可以输出空格以清空该行,然后添加另一个\ r.

我刚刚在Windows XP和AIX上测试了以下内容,它按预期工作:

public class Foo {
  public static void main(String[] args) throws Exception {
   System.out.print("old line");
   Thread.sleep(3000);
   System.out.print("\rnew");
  }
}

我打印"旧线",延迟3秒,然后"旧线"变为"新线"

我故意使第一行比第二行更长,以证明如果你想要删除整行,你必须用空格覆盖末尾.

另请注意,"\ b"转义序列将备份1个空格,而不是行的开头.所以如果你只想删除最后2个字符,你可以写:

System.out.println("foo\b\bun")

并获得"乐趣".


在实际代码中,是的.在3行测试行为,不值得我的时间.:)
main()应该捕获异常!:d
@frewper在一个真正的应用程序中你根本不需要延迟它:)

2> izb..:

我的猜测(这是一个猜测)将是'\ r'确实有效,但你正在使用的控制台并不像你期望的那样对待它.您使用的是哪个控制台?如果它类似于IDE中的控制台输出,那么您是否在真正的命令行上尝试过它?


在撰写本文时,有一个几乎已有九年历史的bug,它指出了Eclipse上的这个确切问题:https://bugs.eclipse.org/bugs/show_bug.cgi?id = 76936
推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有