Java初学者:while循环
上次我们说过了for循环,简单来说,for循环一般适用于控制某些操作执行次数。但是实际上,我们在处理实际问题是,时常会遇到另外一种需要用到循环的情况:那就是说,当某种条件成立时,我们执行某些操作。比如:当天上下雨的时候,我就一直在家睡觉;当我觉得无聊的时候,我就一直看蜡笔小新;等等等等,诸如此类。那么,在java中该如何表现这种循环呢,这就是我们今天要说的while循环了。while循环在java里的格式是这样的:
初始化某种条件(大多数时候)
while(某种条件成立)
{
执行某些操作;
改变while里面的那个条件;(大多素时候需要改变,但也有一些时候不用改变)
}
以上就是while循环了,为了更好的说明问题,我们来做个让用户输入的小程序,这个小程序中,只要用户输入yes, 那么java就会一直打印出"Hello baby",然后java会提示用户继续输入内容,只要用户输入的不再是yes, 那么就跳出while循环。如下所示:
我们看的出来,当我们输入yes的时候,不管大小写,都会打印出Hello baby, 这是因为equalsIgnoreCase函数的原因,是忽略大小心的比较。当我们输入的不是yes的时候,就会跳出while循环,继续while之后的程序运行。while循环的运行顺序是这样的:
1. 首先检查while里面的条件,如果是true,则进入while下面的花括号,执行里面的操作。如果是false,则直接跳过while循环,继续运行后面的程序。
2. 如果进入了while循环,那么操作完以后,则返回到while后面的圆括号,检查那个条件是否为true, 是的话执行花括号里面的操作,不是的话跳出循环继续后面的程序。
3. 重复第二步,直到跳出while循环。
动态的改变while后面的判定条件是很重要的,如果在while循环的花括号里没有改变判定条件,那么有可能导致while循环永远的执行下去,也就是传说中的死循环,我们以后可以解释一下,但是目前就告诉你,死循环就是不断的没有终止的循环。我们来看一下下面的程序,我们只要把上面的程序略微改动就可以了,就是如下的代码:
你看,一直在打印Hello baby,没完没了的。如果遇到这种情况也不要着急,直接Ctrl + C就可以强制退出程序了。
死循环是不好的,是由于逻辑错误而产生的,也就是logical error,这种错误是人为的,java编译器无法检测出来。java编译器只能检测出syntax error,也就是书写的语法错误。
那么,是不是while循环里就一定要改变while的判定条件呢?其实这不是绝对的。因为实际上,我们可以使用break强制跳出循环,或者如果while是在一个函数里,那么我们也可以使用return跳出函数,当然,也就跳出了while循环。然而作为初学者,目前先不要太在意这个,如果有兴趣可以去看看。continue, break我们以后会说到,return则要等到解释函数的时候再说了。
最后,我们来用while循环来做一个input checking,来结束本次的课程。input checking就是输入检测,就是说如果用户输入的数据不符合程序要求的时候,程序将要求用户重新输入,直到用户输入适合的数据。我们这次让用户输入一个表示浮点型数据的字符串,然后使用String的matches方法和正则表达式来判断用户的输入是否是一个数字,如果不是则一直沦陷在while循环里,如果是,则跳出while循环,计算并显示出sin(x)的值,程序以及运行结果如下:
可以看出,while循环用来检测用户的输入,是一个很好的办法,这可以算是while循环的一种应用。虽然while循环还有很多可以说的,但是怕说的杂乱无章,又或扯的太远,所以今天就先到这里吧,下次我们还要继续说说循环,因为循环在任何计算机语言里都是很重要的,当然也包括java。