我想写时间,从0:0到23:59进行5次,但是这段代码会把它写成无限循环,我无法阻止它,直到我不退出eclipse :)什么是这有问题吗?
class ido {
public static void main (String[] args){
int ora = 0;
int perc = 0;
System.out.println(ora + ": " + perc);
for (int i = 1; i <= 5;){
while (ora <= 24 && perc <= 60){
perc++;
if (perc == 60){
perc = 0;
ora++;
}
if (ora == 24){
ora = 0;
i++;
}
System.out.println(ora + ": " + perc);
}
}
}
}
答案 0 :(得分:3)
正如其他人所指出的,问题是while
循环永远不会终止,因为你正在重置循环内循环控制变量的值。
更常见的写法是三个嵌套循环:
for (int day=1; day <= 5; day++) {
for (int hour=0; hour <= 23; hour++) {
for (int minute=0; minute <= 59; minute++) {
System.out.println( hour + ":" + minute );
}
}
}
答案 1 :(得分:1)
为什么用这种方式编写这段代码?有更好的方法可以做到这一点。
class DoIt {
public static void main(String[] args) {
for(int i=0; i<5; i++) {
for(int hour=0;hour<24; hour++) {
for(int minute=0;minute<60;minute++) {
System.out.printf("%d:%d%n", hour, minute);
}
}
}
}
}
答案 2 :(得分:1)
for循环缺少一个子句,尝试添加i = i; ora和perc永远不会变成&gt; 24和&gt; 60,因此while循环永远不会中断。
答案 3 :(得分:1)
你总是重置你的ora和perc值,所以while循环永远不会破坏 尝试在while循环之前将ora值重置为0(而不是现在的位置)。这样,当ora为24时,while将会中断,并且在5次重复之后,你的for将结束。
答案 4 :(得分:1)
ora&lt; = 24&amp;&amp; perc <= 60
ora将永远不会是24(因为它将在第一个IF中设置为0)
和perc永远不会是60(因为它会在第二个IF中设置为0)
这是infintie循环的原因
答案 5 :(得分:1)
问题是你永远不会退出你的while循环(因为ora和perc被重置为0)。所以你在for循环中的条件是无关紧要的。