【发布时间】:2011-03-14 15:08:55
【问题描述】:
我只是想知道当我使用批处理文件运行我的程序时,是否有一种方法可以使用System.out.println(); 或其他方法来创建一个很酷的加载栏。
这里真正的问题是如何使这个栏看起来好像只打印在一行上。
我不希望它像下面那样分布在多行中:
[aaaaaccccccccccccccc] 25%
[aaaaaaaaaacccccccccc] 50%
[aaaaaaaaaaaaaaaccccc] 75%
一个干净整洁的地方会让事情变得更清洁和友好。
非常感谢,
贾斯蒂安
编辑:
好的。我设法在这里找到了这个链接:How to animate the command line?,但答案是:
- 适用于 C++,而不是 Java
- 在 Java 中似乎效率不高,必须在循环中退格每一行?
在 Java 中有没有更好的方法来做到这一点?
编辑:
这就是我最终的结果:
static final int PROGRESSBAR_LENGTH = 20;
public static void drawProgressBar(int numerator, int denominator) {
int percent = (int) (((double) numerator / (double) denominator) * 100);
String bar = "[";
int lines = round((PROGRESSBAR_LENGTH * numerator) / denominator);
int blanks = PROGRESSBAR_LENGTH - lines;
for (int i = 0; i < lines; i++)
bar += "|";
for (int i = 0; i < blanks; i++)
bar += " ";
bar += "] " + percent + "%";
System.out.print(bar + "\r");
}
private static int round(double dbl) {
int noDecimal = (int) dbl;
double decimal = dbl - noDecimal;
if (decimal >= 0.5)
return noDecimal + 1;
else
return noDecimal;
}
样本输出:
[||||||||||||||||....] 80%(. = 空格)
【问题讨论】:
-
我明白你为什么认为这是重复的,但我的问题肯定更具体。我可能无需使用额外的类就可以完成这项任务。
-
此方法可能有效:stackoverflow.com/questions/852665/…。我花了一秒钟才考虑搜索“进度条”而不是“加载条”。 >>
-
我最终制作了一个更高级的加载栏,它支持多个进程(循环)。它将流程分割成多个部分(以 2D 数组的形式组织),然后对各个部分进行处理,直到全部完成。
标签: java batch-file jar