2、循环结构
我们先简单的通过流程图来认识以下Java中的三种循环结构:
- while 循环,如果碰到 break 则跳出循环,如果碰到 continue 结束本次循环回到循环条件判断部分。
- for 循环,如果碰到 break 则跳出循环,如果碰到 continue 则结束本次循环,跳到表达式3,并不会回到循环条件判断表达式2。
- do while 循环,如果碰到break,则跳出循环,如果碰到 continue 则结束本次循环回到循环条件判断部分。
while循环条件 expr 结果必须为 true 或者 fase 也就是布尔值,
for循环条件 expr2 结果也必须是布尔值,
同理,do while循环条件 expr 结果也的是布尔值。所有的循环,一旦碰到循环条件为 false 都会结束循环(do while 最少执行一次循环)‘’
以上则是我们通过流程图得出的结论,下面我们将依次演示每个循环的具体代码实现:
2.1 while 循环
这里我们举一个很简单的例子来看,张三很喜欢买彩票,他每天都买,直到张三买了十年彩票总算中大奖了,然后张三变成了富豪,结束了他每天买彩票的日子,我们简单算一下,就按一年 365 天算,张三一共要买 3650 天的彩票才能中奖,那么我们如何用程序来简单的表示呢?这里就可以用到 while 了:
这个简单的循环程序我们可以发现,当 while 条件表达式不成立了,我们则会跳出循环,而且每次进入循环,我们都会 a自增1,更接近不成立的那个条件,这也叫做循环的迭代条件,如果循环语句中的条件恒成立的话,那将会是个死循环!当然像以上的代码你也可以写个恒成立的表达式,只要达到条件使用 break 跳出即可,berak我们后面会讲,先放着。
2.2 for 循环
for 循环的格式会比 while 循环更直观,如果循环里面代码特别多的话,我们可能很难找到循环更新的表达式,而 for 循环刚好就弥补了这个麻烦,循环更新表达式直接在一行当中:
for ( 表达式1; 布尔表达式2; 表达式3 ) {
//....code
}
- 表达式1:用来设置循环变量的初始值
- 表达式2:循环条件,用来判断是否为真假,条件为假则跳出循环
- 表达式3:循环变量的更新方式
在我们的刚开始循环图也能看出来,for循环的执行过程是:1->2->code->3->2->code->3->2->code->3.....
这里我们在写一个很简单的例子来让大家更充分认识 for,求 1~100的和:
2.3 do while 循环
这个循环相对于前两个循环使用的频率就会少很多了,看刚开始的图大家也能分析到,此循环最低执行一次,也很好理解,二话不说先执行循环体,在进行条件判断,像类似的,我们在写C语言三子棋的时候用到过,一进来先打印菜单让你进行选择。这里我们也写一个简单的例子让大家看一下 do while 循环的语法,比如打印 1~10 的数字:
public class TestDemo { public static void main(String[] args) { int i = 1; do { System.out.println(i); i++; } while (i <= 10); } }
注意:while后面的分号要写上
2.4 break 和 continue
- break 的功能是跳出循环,如果是嵌套循环则是跳出最近的循环
- continue 的功能是跳过本次循环,进入下次循环。
至于 break 和 continue 他们执行后分别跳到了哪个地方,再这一节刚开始的那个流程图已经画的非常清楚了,大家可以去看一下,接着我们就来简单的实现下最开始讲的张三中彩票使用 break 的写法:
public class TestDemo { public static void main(String[] args) { int a = 1; while (true) { if (3650 == a) { System.out.println("第" + a + "天,中奖了!"); break; } System.out.println("第" + a + "天,没中奖!"); a++; } } }
如上C语言文章很详细的介绍了 continue,因为 Java 在这里跟C与语言区别不是很大,只要记住,Java部分表达式需要布尔表达式即可。
3、输出到控制台
在Java中有三种基本输出语法:
System.out.println(mgs); //输出一个字符串,换行
System.out.print(mgs); //输出一个字符串,不换行
System.out.printf(format, msg); //格式化输出,与C语言基本一致
演示:
说真的,像这些打印函数几乎以后开发中用不上的,也没必要去给他完全研究透,只要我们会用即可。
4、从键盘输入
这个输入语句,我们只要会用就行目前,因为还没有讲到类,所以理解起来会比较麻烦,现在我们只需要照葫芦画瓢即可,等把类讲完,你自然就懂了我今天的操作。
例如,我今天要输入姓名,年龄,然后把他们打印出来:
像平时刷题的时候,如果碰到需要循环输入的话,我们可以在 while() 括号里直接写上我们定义的
scanner.hasNextInt() //一直读取,判断是否有下一个整数,返回值为布尔类型
当循环条件是以上语句的时候,使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z,Linux / Mac 上使用 ctrl + d),具体为什么这么使用我们后期会介绍,我们目前能会用即可。