我需要将此for循环转换为while循环,以便我可以避免使用break。
double[] array = new double[100];
Scanner scan = new Scanner(System.in);
for (int index = 0; index < array.length; index++)
{
System.out.print("Sample " + (index+1) + ": ");
double x = scan.nextDouble();
count++;
if (x < 0)
{
count--;
break;
}
array[index] = x;
}
这是我提出的,但我得到了不同的输出:
int index = 0;
double x = 0;
while (index < array.length && x >= 0)
{
System.out.print("Sample " + (index+1) + ": ");
x = scan.nextDouble();
count++;
if (x < 0)
{
count--;
}
array[index] = x;
index++;
}
答案 0 :(得分:1)
更改
if (x < 0)
{
count--;
}
array[index] = x;
index++;
类似
if (x < 0)
{
count--;
}
else
{
array[index] = x;
index++;
}
答案 1 :(得分:1)
如果你想避免中断,将for循环更改为while循环并没有任何帮助。
这个解决方案怎么样:
boolean exitLoop = false;
for (int index = 0; index < array.length && !exitLoop; index++)
{
System.out.print("Sample " + (index+1) + ": ");
double x = scan.nextDouble();
count++;
if (x < 0)
{
count--;
exitLoop = true;
}
else {
array[index] = x;
}
}
答案 2 :(得分:1)
此解决方案提供与for循环相同的输出:
while (index < array.length && x >= 0)
{
System.out.print("Sample " + (index+1) + ": ");
x = scan.nextDouble();
count++;
if (x < 0)
{
count--;
}
else
{
array[index] = x;
index++;
}
}
说明:
在for循环中,你使用break语句,所以在程序遇到中断后没有任何反应。所以array[index] = x;
没有被执行。
在while循环中,因为没有中断,循环继续,所以语句array[index] = x;
和index++;
被执行。
这就是你得到不同结果的原因。如果你不想要陈述
array[index] = x;
index++;
要执行,您只需将if语句设为if / else语句,如上所述。