1

这是Y Daniel Liang所著的 Java 简介一书中的一个问题:

将for循环语句转换为while循环和do-while循环?

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

我对如何将其转换为 do-while 循环感到非常困惑。我应该做些什么?请在下面查看我的代码。

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); 
    }
}
4

3 回答 3

1

根据您想要的谨慎程度,您的-loop 示例的“更多”等效do-循环将是:whilefor

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 个函数编译成相同的字节码(至少在我测试它时,令我惊讶的是)。2 个额外的字节码指令sum2(20 vs. 22)。我注意到了一些有趣的事情。

于 2021-01-09T10:26:14.533 回答
-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);
于 2012-05-08T18:15:43.370 回答
-2

您的答案不支持 i 初始值 >= 循环数的情况。

你需要先检查条件。

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

System.out.println(sum);
于 2012-05-08T18:18:38.500 回答