如何打印唯一的完成百分比?

时间:2019-03-27 14:07:29

标签: java list jsp set

对于一个项目,我正在生成过程日志,该日志显示当前已完成的百分比,但是问题是,它可能会为每个百分比显示相同的百分比。我想要只打印每个百分比值一次的东西。

public class Progress {
    public static void progressPercentage(int done, int total) {        
        System.out.println();
        String iconLeftBoundary = "[";
        String iconDone = "*";
        String iconRemain = " ";
        String iconRightBoundary = "]";

        if (done > total) {
            throw new IllegalArgumentException();
        }
        int donePercents =  ((100 * done) / total) +1;

        StringBuilder bar = new StringBuilder(iconLeftBoundary);
        for (int i = 0; i < 100; i++) {
            if (i < donePercents)
                bar.append( iconDone );
            else
                bar.append( iconRemain );
        }
        bar.append(iconRightBoundary);
        System.out.print("\r" + bar + " " + donePercents + "%");

        if (done == total) {
            System.out.println("\n");
        }
    }
}

这里方法接受参数,一个完成,第二个总计。我正在从这两个参数计算百分比。

Output I am getting:
[*] 1%
[*] 1%
[*] 1%
[*] 1%
[*] 1%
[**] 2%
[**] 2%
[**] 2%
[**] 2%
[**] 2%

Expecting:
[*] 1%
[**] 2%
[***] 3%
[****] 4%
[*****] 5%

1 个答案:

答案 0 :(得分:0)

您可以在该方法的开头添加一个条件,以检查完成的点是否是百分比的精确点之一。

if(done % (total / 100) != 0){
       return;
}