JAVASE 小白学习笔记(3)流程控制语句结构

流程控制语句结构有顺序结构,分支结构以及循环结构,具体说明见下表所示。

流程控制语句结构
顺序结构:从上到下,顺序执行
分支结构:根据选择不同,来执行不同的代码。if…else和switch…case
循环结构:根据条件循环重复执行某段代码。for,while和do…while三种

1. 顺序结构

顺序结构:在同一个方法中从上往下执行

package westos.lianxi.zuoye;
/*顺序结构:在同一个方法中代码从上往下依此进行执行.从键盘上输入一个值,并进行打印输出*/
/*实现键盘输入的步骤: 1.导包,格式为:import  java.util.Scanner;
                      导包的位置必须在源文件的上面,在class的上面
                      2.创建键盘录入对象
                      格式为:Scanner sc=new Scanner(System.in);
                      3.通过对象获取数据
                      格式为:int a=sc.nextInt();
 */
import java.util.Scanner;//导包
public class ShunXuJieGou {
    
    
    public static void main(String[] args) {
    
    
        System.out.println("欢迎登陆教务系统");
        //创建键盘录入对象
        Scanner sc=new Scanner(System.in);

        System.out.println("请输入您的姓名:");
        String s=sc.next();
        System.out.println("您的姓名为:"+s);

        System.out.println("请输入您的年龄:");
        int age=sc.nextInt();
        System.out.println("您的年龄为"+age);

        System.out.println("请输入您的分数:");
        double score=sc.nextDouble();
        System.out.println("您的分数为:"+score);

        System.out.println("请告知是否毕业");
        boolean flag=sc.nextBoolean();
        System.out.println("您的毕业情况为:"+flag);
    }
}

输出的结果为:

欢迎登陆教务系统
请输入您的姓名:
小明
您的姓名为:小明
请输入您的年龄:
18
您的年龄为18
请输入您的分数:
85.5
您的分数为:85.5
请告知是否毕业
true
您的毕业情况为:true

2.分支结构

2.1 条件语句

2.1.1 if单分支语句

if单分支语句的语法格式:
if(条件表达式){
//当条件表达式结果为true时,需要执行的语句块
}

说明:
(1)条件表达式必须是布尔表达式(关系式或逻辑表达式)、布尔变量。
(2)语句块只有一个语句时,{}可以省略,但是建议进行保留
(3)执行流程:条件成立就执行语句,否则就不执行

在这里插入图片描述


2.1.2 if…else双分支条件语句

if else双分支条件语句的语法格式为:
if(条件表达式){
    
    
//当条件表达式结果为true时,需要执行的语句块1
}else{
    
    
//当条件表达式结果为false时,需要执行的语句块2
}

说明:
(1)条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量。
(2)if或else的语句块只有一个语句时,{}可以省略,但是建议保留
(3)执行结果:当条件成立执行语句块1,不成立执行语句块2

在这里插入图片描述


2.1.3 if…else 多分支条件语句

if...else多分支条件语句的语法结构:
if(条件表达式1{
    
    
//当条件表达式1结果为true时,需要执行的复合语句1
}else if(条件表达式2{
    
    
//当条件表达式结果为true时,需要执行的复合语句2
...
else{
    
    
//当上述条件表达式结果为false时,需要执行的语句
}

注意:
(1)每个if或者else后面的{}不是必须的,但是没有{},默认只能带一条语句。即if或者else后面的语句块只有一条语句时,可以省略{},但是可读性不够好。
(2)最后的else不是必须的,可以进行省略
(3)执行过程:从上到下判断条件,如果一旦某个条件成立了,就执行对应的语句块,后面的条件就不会看了。如果所有条件都不满足,如果存在else,那么执行else,那么执行else,如果不存在else,就什么也不执行

在这里插入图片描述

package westos.lianxi.zuoye;

public class DuoFenZhi {
    
    
    public static void main(String[] args) {
    
    
        int score=89;
        //if...else if多分支语句
        if(score>90&&score<=100){
    
    
            System.out.println("成绩优秀");
        }
        else if(score>80&&score<=90){
    
    
            System.out.println("成绩良好");
        }
        else if(score>60&&score<=80){
    
    
            System.out.println("成绩及格");
        }
        else{
    
    
            System.out.println("成绩不及格");
        }
    }

}

输出的结果为:

成绩良好

2.1.4嵌套

if…else系列语句可以嵌套,在任意一个语句块中都可以再嵌套其他的条件语句

执行特点:当外层条件满足时,内层条件才判断


3.选择结构

选择结构-switch语法结构:
switch(表达式){
    
    
case 常量值1//执行语句块1
[break;]//break可以省略
case 常量值2//执行语句块2
[break]......
case 常量值n:
//执行语句块n;
[break];
[default:
//执行缺省语句(默认语句)
[break];
]
}

在这里插入图片描述

注意事项
表达式返回的结果类型只能是byte,short,char,int,枚举(JDK1.5以后),String(JDK1.7以后)
表达式返回的结果的类型需要与case后的值的类型保持一致
case后面只能跟常量值,不能是变量值或者是不确定的表达式的值
同一个switch语句,case的常量值必须互不相同
break是可选的,当表达式返回结果与某个case后的值匹配成功后,执行相应分支的语句,一旦进入某个分支后,直到遇到break才能退出switch,否则将会继续执行下一个case语句(也可以成为case穿透)
default是可选的。位置也不一定在最后,也可以任意case的位置。但是不管在哪里,都是要所有case的常量值不匹配后才会进入default分支,需要遇到break或switch的闭括号"}"才会停止

总结:
1.switch的入口,表达式值与某个case匹配,或都不匹配,从default进入
2.switch的出口,遇到break或者switch的闭括号"}"结束


4.条件判断与选择结构的选择

1.当条件判断是等值判断,并且表达式的结果是byte,short,char,int,枚举,String类型的时候,用switch会更合适,其他都使用条件判断
2.可以使用switch…case的,肯定可以使用if…else,返回来不一定


5.循环结构

循环结构就是在满足一定条件的情况下反复执行某一段操作。在java中提供了三种常用的循环语句,分别是while循环语句、do…while循环语句和for循环语句。

5.1 while循环语句

while循环语句语法结构:
while(条件表达式){
    
    
//循环体语句块
}

在这里插入图片描述

执行过程:
(1)先判断循环条件
(2)条件成立,执行循环体语句块
(3)回到(1)
(4)知道条件不成立,结束while循环


5.2 do…while循环语句

do while循环语句语法结构:
do{
    
    
//循环体语句块
}while(条件表达式);

执行过程:
(1)先无条件执行一次循环体语句块
(2)再判断循环条件
(3)条件成立,再次执行循环体语句块
(4)回到(2)
(5)直到条件不成立,结束do…while循环

注意:
执行一次循环体后,再判断条件,如果条件成立,继续下一次循环体,因此do…while循环至少执行一次循环体

在这里插入图片描述


5.3 for循环语句

for循环结构语法结构:
for(初始化表达式1;循环条件表达式2;迭代表达式3[
//循环语句块
}

执行过程:
(1)执行初始化表达式1
(2)判断循环条件表达式2
(3)如果条件成立,执行循环体语句块
(4)执行迭代表达式3
(5)重复(2)(3)(4)(5)
(6)直到循环条件不成立,结束for循环

在这里插入图片描述

注意:

  • 两个分号必不可少
  • 三个表达式可以省略,但要结合break,否则会死循环
  • 表达式1可以有多个变量声明,但必须是同一个类型,用逗号分隔
  • 表达式3可以有多个变量更新,用逗号隔开就行

5.4 三种循环语句的比较

在这里插入图片描述

三种循环语句的比较
三种循环语句都能实现循环重复执行某段代码,可以相互转换
执行顺序不同:for、while是先判断后执行,do…while先执行后判断
执行效果不同:while和for,如果第一次条件判断不满足,那么循环体将一次都不执行;而do…while是执行一次循环体,然后才判断条件,看是否第二次执行循环体
执行效率不同:do…while效率最高
每一个循环都有四个循环要素,而for循环体现的最明显,循环变量初始值,循环条件,循环体,循环变量更新迭代
for循环适用于循环次数比较明确的,而do…while适用于至少一次的循环。while适用于循环条件比较明确的

5.5 嵌套循环

一个循环体中嵌套了另一个完整的循环结构。一个循环结构充另一个循环的循环体。
三个循环体中都可以嵌套另外任意一种循环结构。

执行特点:先执行外层循环,外循环执行一次,内循环从头到尾执行一轮。

总次数=外循环次数*内循环次数。详细说:总次数=内循环第一轮的次数+内循环第二轮的次数+内循环第三次的次数…+内循环第n轮的次数。轮数就是外循环的次数。

打印一个矩形4行5列的#

(1)打印4行的#

public class QianTao2 {
    
    
    public static void main(String[] args) {
    
    
        for(int i=0;i<4;i++){
    
    
            System.out.println("#####");
        }

    }
}

输出的结果为:
在这里插入图片描述
(2)每行5个#,还可以使用循环

public class QianTao2 {
    
    
    public static void main(String[] args) {
    
    
        for (int i = 0; i < 4; i++) {
    
    
            for (int j = 0; j < 5; j++) {
    
    
                System.out.print("#");
            }
            System.out.println();

        }
    }
}

输出的结果为:
在这里插入图片描述


5.6 跳转

跳转
break:只能用于switch或者循环中,用于跳出所在的当前循环或switch
continue:只能用于循环中,提前结束本次循环,继续下一次循环
return:用于结束当前方法
package westos.lianxi.zuoye;

public class TestBreak {
    
    
    public static void main(String[] args) {
    
    
        for(int i=1;i<=5;i++){
    
    
            for(int j=1;j<=5;j++){
    
    
                System.out.print("*");
                if(i==j){
    
    
                    break;
                }
            }
            System.out.println();
        }
    }
}

输出的结果为:
在这里插入图片描述

package westos.lianxi.zuoye;

public class TestContinue {
    
    
    public static void main(String[] args) {
    
    
        for(int i=1;i<=5;i++){
    
    
            for(int j=1;j<=5;j++){
    
    
                System.out.print("*");
                if(i==j){
    
    
                    continue;
                }
            }
            System.out.println();
        }
    }
}

结果为:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41537102/article/details/109612993