主要分为两种,Java** 循环控制和条件判断**。
1. 循环控制
可能存在一种情况,当我们需要执行的代码块数次,通常被称为一个循环。
Java有非常灵活的三循环机制。可以使用以下三种循环之一:
- while 循环
- do...while 循环
- for 循环
while 循环 ,特点:先判断,后执行
while循环是一个控制结构,可以重复的特定任务次数。
while循环的语法是:
while(Boolean_expression)
{
//Statements
}```
在执行时,如果布尔表达式的结果为真,则循环中的动作将被执行。只要该表达式的结果为真,执行将继续下去。
在这里,while循环的关键点是循环可能不会永远运行。当表达式进行测试,结果为假,循环体将被跳过,在while循环之后的第一个语句将被执行。
![while循环.png](http://upload-images.jianshu.io/upload_images/2293787-b29b009c17bd9283.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
这将产生以下结果:
value of x : 10
value of x : 11
value of x : 12
value of x : 13
value of x : 14
value of x : 15
value of x : 16
value of x : 17
value of x : 18
value of x : 19```
do...while 循环 特点:先执行,后判断
do ... while循环类似于while循环,不同的是一个do ... while循环是保证至少执行一次。
do...while循环的语法是:
do
{
//循环操作
} while (Boolean_expression);```
请注意,布尔表达式出现在循环的结尾,所以在循环中的语句执行前一次布尔测试。
如果布尔表达式为真,控制流跳回,并且在循环中的语句再次执行。这个过程反复进行,直到布尔表达式为假。
public static void main(String[] args) {
/**
* do...while 至少会被执行一次
*/
int sum=0; //保存偶数的和
int num=2; //代表1-50之间的偶数
do {
sum =sum+num; //累加求和
num=num+2; //每执行一次将变量值加2
} while (num<=50); //当变量小于或等于50时重复执行循环
System.out.println("50以内的偶数之和为 :"+sum);
}
运行结果如下:
50以内的偶数之和为 :650
###for 循环
for循环是一个循环控制结构,可以有效地编写需要执行的特定次数的循环。知道一个任务要重复多少次的时候,for循环是有好处的。
for循环的语法是:
// 循环变量初始化;循环条件;循环变量变化部分
for(initialization; Boolean_expression; update)
{
//Statements
}```
- 执行循环变量初始化部分,设置循环的初始状态,此部分在整个循环中只执行一次
- 进行循环条件的判断,如果条件为 true ,则执行循环体内代码;如果为 false ,则直接退出循环
- 执行循环变量变化部分,改变循环变量的值,以便进行下一次条件判断
- 依次重新执行< 2 >、< 3 >、< 4 >,直到退出循环
特点:相比 while 和 do...while 语句结构更加简洁易读
运行结果如下:
1到100之间不能被3整除的数之和为:3367
break 关键字
生活中,我们经常会因为某些原因中断既定的任务安排。如在参加 10000 米长跑时,才跑了 500 米就由于体力不支,需要退出比赛。在 Java 中,我们可以使用 break 语句退出指定的循环,直接执行循环后面的代码。
运行结果如下:
当前的累加值为:21
continue 关键字
continue关键字可以在任一环的控制结构使用。它使循环立即跳转到循环的下一次迭代。
- 在for循环中,continue关键字会导致控制流立即跳转到更新语句。
- 在一个while循环或do/while循环,控制流立即跳转到布尔表达式。
运行结果如下:
1到10之间的所有偶数的和为:30
Java 循环语句之多重循环
循环体中包含循环语句的结构称为多重循环。三种循环语句可以自身嵌套,也可以相互嵌套,最常见的就是二重循环。在二重循环中,外层循环每执行一次,内层循环要执行一圈。
例如:使用 * 打印长方形:
运行结果如下:
*********
*********
*********
*********
执行流程:当 i = 1 时,外层循环条件成立,进入内层循环,开始打印第一行内容。此时, j 从 1 开始,循环 8 次,内层循环结束后换行,实现第一行 8 个 * 的输出。接下来返回外层循环 i 变为 2 ,准备打印下一行,依此类推,直到完成长方形的打印。
例如:使用 * 打印直角三角形:
运行结果如下:
打印直角三角形
*
**
***
****
Java 条件判断
在 Java 中有两种类型的条件判断语句,它们分别是:
- if 语句
- switch 语句
生活中,我们经常需要先做判断,然后才决定是否要做某件事情。例如,如果考试成绩大于 90 分,则奖励一个 IPHONE 5S 。对于这种“需要先判断条件,条件满足后才执行的情况”,就可以使用if 条件语句实现。
语法:
if(条件){
//条件成立时执行的代码
}
if...else 语句
任何 if 语句后面可以跟一个可选的 else 语句,当布尔表达式为 false,语句被执行。
语法:
if(条件){
//条件成立时执行的代码
}else{
//条件不成立时执行的代码
}
多重 if 语句
if 后面可以跟一个可选的 else if...else 语句,在测试不同条件下单一的 if 语句和 else if 语句是非常有用的。
当使用 if , else if , else 语句时有几点要牢记。
- 一个 if 语句可以有0个或一个 else 语句 且它必须在 else if 语句的之后。
- 一个 if 语句 可以有0个或多个 else if 语句且它们必须在 else 语句之前。
- 一旦 else if 语句成功, 余下 else if 语句或 else 语句都不会被测试执行。
语法:
if(条件1){
//代码块1
}else if(条件2){
//代码块1
}else{
//代码块3
}```
执行过程:
****[![](http://upload-images.jianshu.io/upload_images/2293787-7d8e9c73bdde53b7.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)](http://img.mukewang.com/5364a1db0001b6fb03790248.jpg)
##### 嵌套 if 语句
**嵌套 if 语句**,只有当外层 if 的条件成立时,才会判断内层 if 的条件。例如,活动计划的安排,如果今天是工作日,则去上班,如果今天是周末,则外出游玩;同时,如果周末天气晴朗,则去室外游乐场游玩,否则去室内游乐场游玩。
语法:
**[![](http://upload-images.jianshu.io/upload_images/2293787-360db11922191a7e.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)](http://img.mukewang.com/5364f3be000121bf01480198.jpg)**
执行过程:
**[![](http://upload-images.jianshu.io/upload_images/2293787-5bce3e35fdd7050e.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)](http://img.mukewang.com/5364bd8f0001c91e03690285.jpg)**
###switch 语句
当需要对选项进行**等值判断**时,使用 switch 语句更加简洁明了。
语法:
**[![](http://upload-images.jianshu.io/upload_images/2293787-e14c473b7d7b0e98.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)](http://img.mukewang.com/5364f4c800010b1f01620289.jpg)**
执行过程:当 switch 后表达式的值和 case 语句后的值相同时,从该位置开始向下执行,直到遇到 break 语句或者 switch 语句块结束;如果没有匹配的 case 语句则执行 default 块的代码。
![switch.png](http://upload-images.jianshu.io/upload_images/2293787-b784ca007bb0762f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
运行结果如下:
Well done
Your grade is C```