在Java中将for循环转换为while循环

时间:2015-12-08 23:51:09

标签: java

我需要将此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++;
    }

3 个答案:

答案 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语句,如上所述。