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。

时间: 2024-12-28 22:18:37

Java初学者:while循环的相关文章

Java初学者:for循环介绍

本章节,我们介绍java里的循环,在开始本章节之前,先给大家提出一个问题,比如说,我让你用print显示出10条"Hello baby"的信息,你会怎么做呢? 从我们以前所学的知识来看,这很简单,只需要System.out.println("Hello baby");十次即可.但是我让你显示出100次甚至更多呢? 也许你说我是无理取闹,是的,这个问题本身并没有实际的意义,但是这样的问题实际上就是:多次执行相同或者有一定规律的操作.在这种时候,我们需要用到循环.只从语

Java初学者容易犯的代码错误

1. 不会判断空 空指针异常是所有Java初学者接触最多的异常,没有之一.原因是,你们拿到一个对象后容易不假思索的直接使用(直接给这个对象的属性赋值,直接调用这个对象的方法等),不报异常才怪呢!下面是最经典的判断空的例子: private boolean isEmpty(String str){ if(str==null || "".equals(str)){ return true; } return false; } 2. 在for循环嵌套里调用底层查询数据库的方法 这种方式一定要

java基础3_循环语句,数组

java中的循环: Java中提供了3中循环结构:  while  do-while  for ① 循环结构的作用? 可以不断重复执行循环结构中的代码: ② 上面的3个循环结构功能都是一样的,只是结构不一样: ③ 循环的次数的控制 ④ 多种循环结构的语法以及执行流程: ⑤ 能够区分每一种的特点,知道如何选择 while语法: while(条件){ // 循环体,需要重复做的事情的代码 } 执行流程: 上面的这个循环结构可能会执行n次循环 第一次  : 条件(true) ---> 执行一次循环体:

Java 语法 索引 ----- 循环(loop)

While 和  Do-While //while int i = 0; while (i < 10) { System.out.print(i++); } //do - while int i = 0; do { System.out.print(i++); } while ( i < 10 ); For 和 Foreach for (int i = 0; i < 10; i++){ System.out.print(i); } for (int k = 0, l = 10; k &l

再学Java 之 foreach循环

从Java 5 之后,Java提供了一种新的循环:foreach循环,这种循环遍历数组和集合更加简洁. foreach循环语法格式如下: for ( type variableName : array | collection){ //variableName自动迭代访问每个元素 } 在很多书籍中,都能找到这么一句话"使用foreach循环迭代数组元素时,并不能改变数组元素".如: String books = {"a","b","c&

Java语言的循环控制结构

Java语言的循环控制结构 循环控制结构:是在一定条件下,反复执行某段程序的流程结构,被反复执行的程序称为循环体.循环控制结构是程序中非常重要和基本的一种结构,它是由循环语句来实现的. Java 的循环语句共有三种: while 语句. do-while 语句和 for 语句. 1.while 语句 while 语句的一般语法格式如下: while( 条件表达式 )               { 循环体}: 其中条件表达式的返回值为布尔型,循环体可以是单个语句,也可以是复合语句块. while

Java初学者

一位资深程序员大牛给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍.这一部分的内容,同样适用于一些希望转行到Java的同学. 在大家看之前,我要先声明两点.1.由于我本人是Java后端开发出身,因此所推荐的学习内容是Java Web和Java后端开发的路线,非Java Web和J

一位资深程序员大牛给予Java初学者的学习建议(转)

一位资深程序员大牛给予Java初学者的学习建议 这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议? 今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍.这一部分的内容, 同样适用于一些希望转行到Java的同学. 在大家看之前,我要先声明两点. 1.由于我本人是Java后端开发出身,因此所推荐的学习内容是Java Web和Java后端开发的路线, 非Java Web和Java后

Java 增强 for 循环

Java 增强 for 循环 Java5 引入了一种主要用于数组的增强型 for 循环. Java 增强 for 循环语法格式如下: for(声明语句 : 表达式) { //代码句子 } 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配.其作用域限定在循环语句块,其值与此时数组元素的值相等. 表达式:表达式是要访问的数组名,或者是返回值为数组的方法. 实例 Test.java 文件代码: public class Test { public static void main(St

java用while循环设计轮询线程的性能问题

java用while循环设计轮询线程的性能问题 轮询线程在开发过程中的应用是比较广泛的,在这我模拟一个场景,有一个队列和轮询线程,主线程往队列中入队消息,轮询线程循环从队列中读取消息并打印消息内容.有点类似Android中Handler发送消息. 首先定义一个Message类. public class Message { private String content; public Message(String content) { this.content=content; } public