Java流程控制:
java中有三种流程控制结构**:顺序结构、选择结构、循环结构**
顺序结构:
指程序从上向下依次执行每条语句的结构,中间没有任何的判断和选择。
public static void main(String [] args){
System.out.println("Hello World!");
}
选择结构:
根据条件判断的结果来选择执行不同的代码
循环结构:
根据条件判断来重复性地执行某段代码
if控制语句:
有三种不同的形式,分别是单分支结构、双分支结构和多分支结构
单分支结构:
if(表达式){
语句
}
public static void main(String[] args) {
int a = 10;
int b = 12;
if(a>b) {
System.out.println(a);
}
}
if是java的关键字
表达式布尔类型的表达式,其结果为true或false
if语句的执行步骤如下:
1)对表达式的结果进行判断
2)如果表达式的结果为真,则执行该语句
3)如果表达式的结果为假,则跳过该语句
if 使用过程中可能遇到的坑:
if后面有一个分号; 而分号也是一个完整的表达式
如果b为true,会执行这个分号,然后打印yes
如果b为false,不会执行这个分号,然后打印yes
public static void main(String[] args) {
int a = 10;
int b = 12;
if(a>b) ;
System.out.println(a);
}
使用if-else语句实现多分支语句
语法格式:
if(表达式){
语句1
}else{
语句2
}
当表达式为真时(满足条件),执行语句1;表达式为假时,执行else分支的语句
if-else语句的执行步骤如下:
1)对表达式的结果进行判断
2)如果表达式的结果为true,则执行语句1
3)如果表达式的结果为false,则执行语句2
注意:if-else语句由if和紧随其后的else组成
else子句不能单独使用,它必须是if语句的一部分,与最近的if语句配对使用
public static void main(String[] args) {
int a = 10;
int b = 12;
if(a>b) {
System.out.println(a);
}else {
System.out.println(b);
}
}
使用多分支语句实现多分支处理
语法格式:
if(表达式){
语句1
}else if(表达式2){
语句2
}else{
语句3
}
其中else if语句可以有多个
多分支if语句执行流程:
1)对表达式1的结果进行判断
2)如果表达式1的结果为true,则执行语句1,;否则判断表达式2的值
3)如果表达式2的结果为true,则执行语句2;否则执行语句3
注意:如果if或else子句中要执行的语句超过一条,则必须将这些语句用大括号括起来
public static void main(String[] args) {
int a = 10;
int b = 10;
if(a>b) {
System.out.println(a);
}else if(a<b){
System.out.println(b);
}else {
System.out.println(a+b);
}
}
嵌套if控制语句;
If(表达式1){
If(表达式2){
语句块1
}else{
语句2
}
}else{
If(表达式3){
语句3
}else{
语句4
}
}
嵌套if控制语句的执行步骤如下:
1)对表达式1的值进行判断。
2)如果表达式1的结果为true,再对表达式2的结果进行判断。如果表达式2的结果为true,则执行语句1;否则,执行表达式2的值。
3)如果表达式1的结果为false,对表达式3的结果进行判断。如果表达式3的值结果为true,则执行语句3;否则,判断表达式4的值
public static void main(String[] args) {
/*
要求:
(1)外层if控制语句用来判断是否是工作日
(2)内层if控制语句用来判断天气情况
实现步骤:
(1)使用if控制语句判断今天是否是周六或周日
(2)如果是周六或周日,那么进一步判断气温是否在30度以上
(3)如果不是周六或周日,那么进一步判断天气好
*/
//定义星期数为6
int day = 6;
//定义温度为31度
int temp = 31;
//定义天气状况为好
String weather = "天气好";
//条件判断:如果day==6或者day==7满足条件执行temp>30判断
//不满足条件判断天气状况
if(day==6||day==7) {
//如果temp大于30满足条件输出去游泳,不满足输出去爬山
if(temp>30) {
System.out.println("去游泳");
}else {
System.out.println("去爬山");
}
}else {
if ("天气好".equals(weather)) {
System.out.println("去客户单位谈业务");
}else {
System.out.println("在公司上网查资料 ");
}
}
嵌套的样式有多种,不单一,没有规定的格式
switch语句(相当于if else的另一种表达方式——多分支结构):
表达式不是boolean类型
switch(表达式/值){
case 常量1:
语句1;
break;
case 常量2:
语句2;
break;
case 常量3:
语句3;
break;
}
case用于与表达式进行匹配,表达式里面的值不是布尔类型
break用于终止后续语句的执行
default是可选的,当其他条件都不匹配时执行default
Switch可以使用byte,short,int,char,String,enum
case的穿透性:
每个表达式结束,都应该有一个break;如果case语句中没有break的跳出循环的话,后面的结构不做判断直接运行,而且default也会执行。
switch语句的执行步骤:
1)计算switch后表达式的值
2)将计算结果从上至下依次与case后的常量值比较
3)如果相等就执行该常量后的的代码块,遇到break语句就结束
4)如果与任何一个case后的常量值都不匹配,就执行default中的语句
public static void main(String[] args) {
int score = 75;
switch (score/10) {
case 10:
case 9:
System.out.println("A级");
break;
case 8:
System.out.println("B级");
break;
case 7:
System.out.println("C级");
break;
case 6:
System.out.println("D级");
break;
default:
System.out.println("E级");
}
}
循环结构:
java中的循环有while循环、do-while循环和for循环
主要作用是反复执行一段代码,直到满足一定的条件为止。
构成:
1、初始部分:设置循环的初始状态
2、循环体:重复执行的代码
3、循环条件:判断是否继续循环的条件,如使用“i<100”判断循环次数是否已经达到100次
while循环:
语法格式:
变量初始化
while(循环条件){
循环体
}
循环条件是一个布尔表达式,值为true或false
大括号中的语句统称为循环操作,也称循环体。
while语句的执行步骤:
1)先对循环条件进行判断,如果结果为真,则执行循环语句
2)执行完毕后继续对循环条件进行判断,如果为真,继续执行
3)如果结果为假,则跳出循环,执行后面的语句
public static void main(String[] args) {
int sum = 0;
int i = 1;
while(i<=100) {
sum += i;
i++;
}
System.out.println(sum);
}
要注意避免出现死循环的情况!!!
do-while循环:
语法格式:
变量初始化
do{
循环体
}while(循环条件);
执行步骤:
1)首先执行循环体
2)在对循环条件进行判断,至少执行一次
3)如果结果为真,则继续执行循环体。如果结果为假,终止循环,执行后面的语句。
注:do-while循环语句 while后面跟着的是分号(“ ; ”)
public static void main(String[] args) {
int sum = 0;
int i = 1;
do {
sum += i;
i++;
} while (i<=100);
System.out.println(sum);
}
for 循环:
语法格式
for(表达式1;表达式2;表达式3){
循环体
}
表达式1 :定义的初始化变量,第一次进入循环就执行,并且只执行一次
也可以这样表示:
for(变量初始化;循环条件;修改循环变量的值){
循环体
}
for循环执行步骤:
1)首先执行表达式1,一般是进行变量初始化操作
2)然后执行表达式2,即对循环条件进行判断
3)如果结果为真,则执行循环体
4)循环语句执行完毕后执行表达式3,改变循环变量的值,再次执行表达式2,如果结果为真,继续循环
5)如果结果为假,终止循环,执行后面的语句
import java.util.Scanner;
public static void main(String[] args) {
int score;
int sum = 0;
double avg = 0.0;
Scanner input = new Scanner(System.in);
System.out.println("请输入学生姓名:");
//接收学生的姓名
String name = input.nextLine();
//循环5次录入5门功课成绩
for(int i=0;i<=5;i++) {
System.out.println("请输入5门功课中的"+(i+1)+"门功课的成绩:");
//接收1门功课的成绩
score = input.nextInt();
//计算成绩和
sum += score;
}
//计算平均分
avg = sum/5;
System.out.println(name+"的平均分是:"+avg);
}
多重循环:
指一个循环语句中的循环体中在包含循环语句,有称为嵌套循环。循环语句内可以嵌套多层循环。同时,不同的循环语句可以相互嵌套
双层循环嵌套执行的次数是乘积的关系:外层循环控制轮数,内层循环控制执行次数 外层执行第一轮,内层根据要执行的次数来执行次数,在重复到外层循环的第二轮,重复执行
while循环与do-while循环、for循环的区别:
1、 语法格式不同
2、 执行顺序不同:while循环先判断循环条件,再执行循环体,如果条件不成立,则退出循环。 do-while循环 先执行循环体,再判断循环条件,循环体至少执行一次。 for循环 先执行变量初始化部分,再判断循环条件,然后执行循环体,最后进行循环变量的计算。如果条件不成立,跳出循环
3、 适用的情况不同:在解决问题时,对于循环次数确定的情况下,通常选用for循环;对于循环次数不确定的情况,通常使用while和do-while循环
跳转语句:
1、break语句:在循环中的作用是终止当前循环(通常与if控制语句一起使用)
2、continue:结束当前本次循环,继续下一次循环,不在执行循环体中continue后面的语句(通常用于循环结构中)
3、return:跳出方法体 结束当前方法的执行并退出 返回至调用该方法的语句处(通常用于方法中)
区别:continue和break用来实现循环结构的跳转,return用来跳出方法
双层for循环:
使用boolean变量结束外部循环:借用boolean变量结束外部循环,需要在内部循环中修改这个变量值,每次内部循环结束后,都要在问外部循环中判断,这个变量的值
使用标签结束外部循环:
在外部循环前的前一行,加上标签,在break的时候使用该标签
即能达到结束外部循环的效果
over:while(true){
switch(){
case:
break;
case:
break;
case:
break over; //终止的是上面while的循环
}
}