使用光标前移时因为位数不足导致上一次输出的残留
在使用\r
将光标进行前移时,如果上一次输出10位,但是本次输出只有5位,那么本次将会只覆盖5位,剩下的5位会残留在屏幕上。
在打印时,终端将打印的东西编入字符矩阵,因此打印只是填入字符,所以未被清除的则继续残留。
解决
1、仅对于此问题,可以判断是否满足位数,对于不满足位数的,填充空格来控制位数一致。
if(i<10){
for (int j = 0; j < 10-i; j++) {
System.out.print(" ");
}
}
2、使用清除整行转义字符,在ANSI码中可以使用\033[2K
来清除整行字符,在清除整行后在重新打印,也可以解决此问题
System.out.print("\033[2K\r");
Other
统计执行时间
long startTime = System.nanoTime();
//code
long endTime = System.nanoTime();
long duration = (endTime - startTime); // 持续时间,单位为纳秒
double seconds = (double) duration / 1_000_000_000.0; // 转换为秒
System.out.printf("程序运行时间: %.6f 秒\n", seconds);