我创建了两个接收数字的方法,并且应该从该数字计数到0并打印出来。一种方法包含一个while循环,它工作正常。另一种方法使用for循环。但由于某种原因,我没有在使用for循环的方法中获得预期的输出。怎么样?
import java.util.*;
public class Methods
{
public static void main(String[] args)
{
int n = 10;
countdown(n);
countdown2(n);
}
public static int countdown(int num)
{
while(num >= 0)
{
System.out.println(num);
num--;
}
return 0;
}
public static int countdown2(int number)
{
for(int i = number; i <= number; i--)
{
System.out.println(number);
number--;
}
return 0;
}
}
答案 0 :(得分:4)
由于你构建for循环条件的方式:
i
最初设置为与number
相同的值。i
小于或等于number
时,循环继续。i
每次循环都会减少。由于i
开始时小于或等于number
,并且变小,所以您不会很快退出循环。 (只有在i
降至Integer.MIN_VALUE
并且在下一次迭代时下溢到Integer.MAX_VALUE
时才会发生这种情况。
将条件更改为i > 0
将是解决此问题的一种方法;或者你最初可以将i
设置为零,并在每次循环循环时递增它。
答案 1 :(得分:2)
for(int i = number; i <= number; i--)
检查循环您的计数仅从数字开始。 你应该从数字到0来计算。
for(int i = number; i >= 0; i--)
答案 2 :(得分:1)
public static int countdown2(int number)
{
for(;number>=0;)
{
System.out.println(number);
number--;
}
return 0;
}
答案 3 :(得分:1)
如果程序的行为方式确实有意义,那么首先应该尝试使用调试器来调试代码。这允许您逐行逐步执行程序并查看所有值
如果你有一个while循环,你可以像这样用for循环交换它(假设你没有continue语句)
for({initialise variable};{condition};{update expression}) {
{do something}
}
与
{initialise variable}
while({condition}) {
{do something}
{update expression}
}
或
{initialise variable}
while(true) {
if ({condition}) break;
{do something}
{update expression}
}
或
{initialise variable}
if({condition})
do {
{do something}
{update expression}
} while({condition});
答案 4 :(得分:0)
那应该有用
public static int countdown2(int number)
{
for(int i = number; i >= 0; i--)
{
System.out.println(number);
number--;
}
return 0;
}
答案 5 :(得分:0)
第二个循环中的条件应为
i >= 0
答案 6 :(得分:0)
public static int countdown2(int number)
{
for(int i = number; i >= 0; i--)
{
System.out.println(number);
number--;
}
return 0;
}