我在这个循环中犯了一些错误,我真的无法理解。这是循环:
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。请问我是否需要更多的课程。
答案 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)
进行以下更正
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;
您似乎根本没有更改currentTick
或totalTicks
的值,但break
循环中的while
应该同时发生以上2个值相等。由于它们最初不相等而你永远不会在while
中更改它们,因此它会变成无限循环。