更新java控制台而不打印新行
所以,基本上我想做的是有一个百分比。所以它上升了0%,1%,等等,但是我不想把它全部打印出来,我想用2%替换%1%。因此,我知道如何为循环执行基本的更新java控制台而不打印新行,java,console,Java,Console,所以,基本上我想做的是有一个百分比。所以它上升了0%,1%,等等,但是我不想把它全部打印出来,我想用2%替换%1%。因此,我知道如何为循环执行基本的,但我不知道如何使用\r或\b,因为在我的编译器中,我得到的只是在一行中打印所有内容 package test; public class est { public static void main(String[] args) { for(int i = 0; i <= 100; i++ )
,但我不知道如何使用\r
或\b
,因为在我的编译器中,我得到的只是在一行中打印所有内容
package test;
public class est
{
public static void main(String[] args)
{
for(int i = 0; i <= 100; i++ )
{
System.out.print("\rPercent = " + i + "%");
}
}
}
所以它打印100行;但我只想在一行上看到这些信息。简单的答案是:当您努力提供“增强的用户体验”时,System.out不是一个合适的基础。可能在这种情况下,您可以使用\r删除同一行上的。但是一旦你需要/想要做一个println()这个上下文就被修复了;你不能再改变它了
package test;
public class est
{
public static void main(String[] args)
{
for(int i = 0; i <= 100; i++ )
{
System.out.print("\rPercent = " + i + "%");
}
}
}
即使这样,“返回”和删除信息也不能在每个平台上都有效
您有三种选择:
- 简单地接受它。在现实世界中,命令行输出通常是丑陋的,大多数人都接受这一点李>
- 查看基于“curses”的库,因为这些库允许“放置”和“重置”您的“游标”。但我实际上不能说这些库有多独立于平台李>
LI>下整整九码,考虑创建一个真正的向导。当然,这是解决你的问题最昂贵的办法李>
我尝试在sysout中使用'\r',它在Intellij Idea控制台中对我有效&从mac osx的终端运行它
public static void main(String[] a) throws InterruptedException {
int progress = 10;
for(progress = 10; progress<=100; progress+=10) {
System.out.print("\rPercent = " + (progress) + "%");
Thread.sleep(3000);
}
}
publicstaticvoidmain(字符串[]a)抛出InterruptedException{
int进度=10;
对于(progress=10;progress对于eclipse,您需要配置控制台来解释Ascii字符,如下所示
\r应该可以工作,但有些终端不支持。请参阅System.out或可能的副本,这不是您努力提供“增强的用户体验”的适当依据…是否有适当的依据?因此不能更新console或替换console中的文本?抱歉,这是因为我被您所说的话弄糊涂了。我本想重新投票,但被一个新问题转移到了一边。我现在刚刚投票:是否有库具有内置于jframe中的控制台,我可以让您着手创建像流氓一样?当我尝试运行eclipse时,它在eclipse上不起作用,它会打印单独的行。然而,当我在终端上运行它时,它工作得很好。干得好。
public static void main(String[] a) throws InterruptedException {
int progress = 10;
for(progress = 10; progress<=100; progress+=10) {
System.out.print("\rPercent = " + (progress) + "%");
Thread.sleep(3000);
}
}