如何将(for循环)转换为(do-while)循环?

时间:2012-05-08 18:10:36

标签: java do-while

这是本书的问题 - 介绍java BY Y Daniel liang。

问题是: - 将for循环语句转换为while循环和do-while循环?

int sum = 0; 
for (int i = 0; i <= 7; i++) 
sum = sum + i; 

请参阅下面的编码。以及需要进行哪些修改。实际上我对如何将其转换为DO-WHILE Loop非常困惑。

public class Convert_forLoop_toWhileLoop {

   public static void main(String[] args) {
       int sum = 0;
       int i = 0;
       do {
           sum = sum + i;
           System.out.println(sum);
           i++;
       } while(i <= 7); 
    }
}

3 个答案:

答案 0 :(得分:0)

根据您想变得多么谨慎,您的 do-loop 示例的“更多”等效 while-for-loop 将是:

int sum1(int n) {
    int sum = 0;
    for (int i = 0; i <= n; i++) {
        sum = sum + i;
    }
    return sum;
}

int sum2(int n) {
    int sum = 0; 
    {
        int i = 0;
        if (i <= n) {
            do {
                sum = sum + i;
                i++;
            } while (i <= n);
        }
    }
    return sum;
}

请注意,我将您的示例封装在 sum1 中(传递 sum1(7) 相当于您的情况)。

对于那些真正想要分头的人——请注意,Java 不一定会将上面的 2 个函数编译成相同的字节码(至少当我测试它时,令我惊讶的是)。 sum2 的 2 个额外字节码指​​令(20 对 22)。只是我注意到了一些有趣的事情。

答案 1 :(得分:-1)

像这样:

int sum = 0;
int i = 0;

do {
   sum += i;
   i++;
} while (i <= 7);

System.out.println("The sum of 0 thru " +i + " is:" + sum);

答案 2 :(得分:-2)

您的答案不支持我的初始值为&gt; =循环次数的情况。

你需要先检查病情。

while (i <= 7) {
    sum+=i;
   // at the last statement increase i
   i++
}

System.out.println(sum);