循环问题:不暂停

时间:2013-10-29 05:11:13

标签: java loops while-loop

我在这个循环中犯了一些错误,我真的无法理解。这是循环:

while (true) {
        System.out.print(stepName[currentTick]);

        for(int i = stepName[currentTick].length() - longestNameInt; i == 0; i--)
            System.out.print(" ");

        System.out.print(" [");

        double percentCalc = (double) stepPercent[currentTick];
        int slotsRep = (int) Math.round((percentCalc * 0.2));

        for(int i = slotsRep; i == 0; i--)
            System.out.print("*");

        for(int i = 20 - slotsRep; i == 0; i--)
            System.out.print(" ");

        System.out.print("] " + stepPercent[currentTick] + "% \r");

        if(currentTick == totalTicks)
            break;

        Thread.sleep(stepTime[currentTick]);
    }

基本上,它只是继续快速打印'(第一步名称)[*] 0%'。 我很抱歉,如果这是非常明显的,但我有点像菜鸟。 :)

P.S。请问我是否需要更多的课程。

3 个答案:

答案 0 :(得分:4)

请更改此内容:

for(int i = stepName[currentTick].length() - longestNameInt; i == 0; i--)

for(int i = stepName[currentTick].length() - longestNameInt; i >= 0; i--)

只有比较错误。

同时确保current tick or totalticks changes for the loop to break的值可能会发生,因为while(true)条件,它们永远不会达到相等状态并且你的循环变得无限。

答案 1 :(得分:1)

进行以下更正

  1. for(int i = stepName[currentTick].length() - longestNameInt; i >= 0;         I - )

     2.    `for(int i = slotsRep; i >= 0; i--)
    
      3.  `for(int i = 20 - slotsRep; i == 0; i--)`
    

答案 2 :(得分:0)

这里有一个无限while循环。

if(currentTick == totalTicks)
    break;

您似乎根本没有更改currentTicktotalTicks的值,但break循环中的while应该同时发生以上2个值相等。由于它们最初不相等而你永远不会在while中更改它们,因此它会变成无限循环。