Java 无需换行即可获得连续状态更新

Java 无需换行即可获得连续状态更新,java,Java,我正在NetBeans7.4上使用Java进行开发,并尝试在同一行上使用以下代码获得连续的状态更新 for (start=0; start<startLimit; ++start){ System.out.print("Index="+start+" of "+startLimit+"\r"); System.out.flush(); } 我有两个问题 我得到了一个线路反馈,这是我不想要的。 输出不会持续更新。我在调试模式下运行,通常只有在中断时,才会在IDE的控制台窗口

我正在NetBeans7.4上使用Java进行开发,并尝试在同一行上使用以下代码获得连续的状态更新

for (start=0; start<startLimit; ++start){
    System.out.print("Index="+start+" of "+startLimit+"\r");
    System.out.flush();
}
我有两个问题

我得到了一个线路反馈,这是我不想要的。 输出不会持续更新。我在调试模式下运行,通常只有在中断时,才会在IDE的控制台窗口中得到更新。似乎每个周期都没有刷新输出。
\r回车符会导致换行,就像Windows中的“\n”

使用退格字符而不是回车符可能会更幸运。如果IDE的控制台无法正确解释回车符,则可能无法正确解释退格符,但可以尝试:

String status = "";
for (start=0; start<startLimit; ++start){
    for (int i = 0; i < status.length(); i++) System.out.print('\b');
    status = "Index=" + start + " of " + startLimit;
    System.out.print(status);
}

然后在IDE之外运行它,查看它在IDE中的行为。您如何确定获得换行符?如果您是从IDE复制/粘贴,则可能是您复制的文本框正在执行此操作,或者可能是您复制到的应用程序(如果它是记事本)。至于法拉盛,我不知道你为什么要这么做。您通常不会刷新系统。打印输出。您使用的是什么操作系统?检查System.getPropertyline.separator返回的内容。抱歉。我的意思是说我在Windows 7上运行应用程序。@Otago是的,因为大多数IDE的控制台不解释特殊的控制字符,如“\b”或“\r”。我认为以下是正确的:不同操作系统的新行字符组合:Windows是\r\n,Linux是\n,MacOS是\r。我认为这是正确的,但是OP的代码在Windows命令提示符下对我有效。