(一)
//设有程序段
boolean k = false;
while( k = false);
System.out.println("快乐风男");
//则下面描述中正确的是()
//A、语法错误
//B、无限循环
//C、快乐风男语句一次也不执行
//D、快乐风男语句执行一次
此处值得注意的是while循环里是赋值符号 = 而不是等于符号 ==,相当于先把false赋值给k,再进行k!= false这样一个判断,第二个需要注意的是while()后面跟着的是一个分号;所以循环体是一个空语句,由于k == false --> false != false是不成立的,所以会直接跳出循环执行语句System.out.println(“快乐风男”);一次后程序就结束,所以答案选D。
(二)
//下面的程序段的运行结果是()
int n = 0;
while(n++ <= 2);
System.out.println(n);
//A、1 2 3
//B、3
//C、4
//D、语法错误
首先呢A答案是肯定不对的,因为println是打印并换行,那里显然没有换行,这里和上面一题一样while后面跟着的是分号;所以循环体为空语句,因此 System.out.println(n);只会执行一次,最终输出的结果只会有一个数。
再来看while(n++ <= 2)等同于 while(n <= 2) n++;即先用来判断 ,在自增1。
whlie(0++< = 2)
whlie(1++< = 2)
whlie(2++< = 2)
whlie(3++< = 2) 即到3的时候,不满足跳出循环,然后在执行一次n++,n的值就来到4,所以选C
(三)
//下面程序段的运行结果是()
double num = 1;
double sum = 0;
while(num != 0){
sum += num;
num -=0.1;
}
System.out.println(sum);
首先这是死循环,大家可以自行运行试试.
下面改改程序 ,加一个i来控制字数观察num的变化
//下面程序段的运行结果是()
double num = 1;
double sum = 0;
int i = 0;
while(num != 0 && i < 10){
sum += num;
num -=0.1;
System.out.println(num);
i++;
}
System.out.println(sum);
从结果可以发现num到0.7就出现问题了,这应该是一个bug,这里提醒我们在循环控制中,最好不要使用浮点型来比较值是否相等!!!