可以讲讲这个思路吗,我怎么算都是错的?
while i小于3 是指最开始的i吗
初始:i=0,s=0
循环第一次:i%2!=0不满足,执行i++,i变为1,s变为1,i<3满足,进入第二次
第二次:i%2!=0满足,执行i=i+2,i变为3,再执行i++,i变为4,s变为5,i<3不满足,循环结束
while(i<3)是在do的那个语句块执行一次后,再判断while里的条件; 然后i++是if后面的代码,因为它没有被包含在if里面,所以它是无论if是否执行都会执行一次的,具体执行过程如下:
1、首先,i=0, s=0, 进入do-while循环执行do的部分:
首先判断if里的条件是否满足,0%2==0 ,所以if不执行;
然后,执行i++后,i=1, 接着执行s=s+i, s=1, 最后判断while的条件,1<3, 继续循环执行do的部分。
2、接着,第二次执行do的部分,:
首先判断if的条件,1%2!=0 ,所以if执行, i= 1+2 =3;
接着执行i++后,i=4; 然后执行s=s+i=1+4=5, 最后判断whie的条件,5>3 ,条件不再满足,退出do-while循环;
所以最后,i的值为4,s的值为5.
测试代码如下:
public class DoWhileTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i=0,s=0;
do {
if(i%2!=0) {
i=i+2;
}
i++;
s= s+i;
}while(i<3);
System.out.println("i="+i+",s="+s);
}
}
1、i=0,i%2!=0不成立,i++变成1,s变成1,i<3循环条件成立,继续执行do
2、i=1,i%2!=0成立,i变成3,i++变成4,s变成5,i<3循环条件不成立,退出循环
最终结果,i=4,s=5