听说看完这篇文章的程序员再也不会抱怨分支与循环结构难了~不信看看就知道了!

一、分支结构

1. if分支结构【重点】

基本if选择结构
  • 语法
if(布尔表达式){
	//代码块
}
  • 执行流程:
    对布尔表达式进行判断;
    结果为true,则先执行代码块,再执行后续代码;
    结果为false,则跳过执行代码块,直接执行后续代码
  • 案例
main(){
	System.out.print("请输入一个数:");
	Scanner s = new Scanner(System.in);
	int n = s.nextInt();
	if(n % 2 == 0){
        System.out.print("偶数");
    }
}
if else选择结构
  • 语法
if(布尔表达式){
    //代码块1
}else{
    //代码块2
}
  • 执行流程:
    对布尔表达式进行判断;
    结果为true,则先执行代码块1,在退出整个结构,执行后续代码
  • 案例
main(){
	System.out.print("请输入一个数:");
	Scanner s = new Scanner(System.in);
	int n = s.nextInt();
	if(n % 2 == 0){
        System.out.print("偶数");
    }else{
        System.out.print("奇数");
    }
}
多重if结构
  • 语法
if(布尔表达式1){
    //代码块1
}else if(布尔表达式2){
    //代码块2
}else if(布尔表达式3){
    //代码块3
}else{
    //代码块4
}
  • 执行流程:
    表达式1为true,则执行代码块1,再退出整个结构;
    表达式2为true,则执行代码块2,再退出整个结构;
    表达式3为true,则执行代码块3,再退出整个结构;
    以上均为false,则执行代码块4,再退出整个结构;

    相互排斥,有一个为true,其他均不再执行,适用于区间判断

  • 注意

    • elseif个数根据开发需求确定;
      最后else根据开发需求决定是否定义(不是必须写的)判断条件之间互斥.
    • 如果 if后面的{ }中只有一条语句,则可以省略{};
      但是省略之后,if中的条件只对仅跟着{ }后面的一条语句起作用,即使是空语句
      ( ; 代表一个语句)。
  • 案例

main(){
	System.out.print("请输入一个数:");
	Scanner s = new Scanner(System.in);
	int n = s.nextInt();
	if(n < 0){
        System.out.print("数据错误!");
        System.exit(0);
    }
	if(n <= 2){
        System.out.print("婴儿");
    }else if(n <= 12){
        System.out.print("儿童");
    }else if(n <= 40){
        System.out.print("青年");
    }else if(n <= 60){
        System.out.print("中年");
    }else{
        System.out.print("老年");
    }
}
if嵌套结构
  • 语法
if(外层表达式){
	if(内层表达式){
    	//内层代码块1
	}else{
    	//内层代码块2
    }
}else{
	//外层代码块
}
  • 执行流程:
    当外层条件满足时,再判断内层条件

    一个选择结构中,可嵌套另一个选择结构
    嵌套格式正确的情况下,支持任意组合

  • 注意
    先判断外层if的条件,条件成立,则判断内层if条件…

2. switch…case分支结构(等值分支)

  • 语法
switch(变量|表达式){  //变量int,表达式的值可以为byte,short,int,char
	case1:
		//逻辑代码1;
	case2:
		//逻辑代码2;
	case 值n:
		//逻辑代码n;
	default:
		//未满足case时的逻辑代码;
}
  • 执行流程:
    如果变量中的值等于值1,则执行逻辑代码1;
    如果变量中的值等于值2,则执行逻辑代码2;
    如果变量中的值等于值3,则执行逻辑代码3;
    如果变量中的值没有匹配的case值时,执行default中的逻辑代码。
    所有case的取值不可相同

  • 注意

    • a. switch后面()中表达式的结果类型
      byte/short/int/char;
      JDK7.0及以上版本支持String的结果类型。
    • b. break:终止、中断,break应用再switch…case结构中代表终止、跳出switch…case结构。
    • c. default没有位置限制,可以写在 swtich结构{}中的case或是case都可以,所以建议 default后面的break不省略。
  • 案例

main(){
	Scanner s = new Scanner(System.in);
	int a = s.nextInt();
	switch(a){
        case 1:
            System.out.println(1);
        case 2:
            System.out.println(2);
        case 3:
            System.out.println(3);
        default:
            System.out.println("Others");
    }
}

二、循环结构

1. 循环的理解
概念

通过某一个条件,重复并且有规律的执行一段代码。

循环组成

循环变量的初始化、循环的条件、循环变量的改变(递增/递减)、循环体。

2. while循环(不确定循环)
  • 语法
while(布尔表达式){
	//逻辑代码(循环操作	)
}
  • 执行流程:
    先对布尔表达式进行判断,结果为true,则执行逻辑代码;
    本次执行完后,再次进行判断,结果仍旧为true,则再次执行逻辑代码;
    直至布尔表达式的结果为false时,才会退出循环结构,执行后续代码
  • 特点
    先判断,再执行,执行次数0~n次
  • 如果循环中,没有对循环变量进行改变,可能会出现死循环
  • 循环中需要累加数据之和,则定义累加器,通常初始化数据为0;
    而且累加器需要定义在循环的外面。
    while循环图解
  • 案例
main(){
	int i = 1;//循环变量
	int result = 0;
    while(i<=100) {
        result = result +i;
        i++;
    }
	System.out.println(result);
}
3、do while循环
  • 语法
do{
	//逻辑代码(循环操作)
}while(布尔表达式);
  • 执行流程:
    先执行一次循环操作后,再进行布尔表达式的判断;
    如果结果为true,则再次执行循环操作;
    如果结果为false,才会退出循环结构,执行后续代码
  • 特点
    先执行,再判断。执行的次数为 1~n次
    do while 循环图解
  • 案例
main(){
	int i = 1;//循环变量
	do{
       result =result+i;
       i++;
    }while(i<=100){
       System.out.println(result);
    }
}
4、for循环(确定循环)
  • 语法
for(初始部分;循环条件;迭代部分){  //;;不能省略
	//循环操作
}
  • 执行流程:
    先对布尔表达式进行判断,结果为true,则执行逻辑代码;
    本次执行完后,再次进行判断,结果仍旧为true,则再次执行逻辑代码;
    直至布尔表达式的结果为false时,才会退出循环结构,执行后续代码
  • 特点:先判断,再执行,执行次数:0~n次
  • 注意
    • a. 循环变量的初始化可以定义在循环的外面,但是for后面()中的分号不能省略。定义在for后面()中的循环变量只能在当前循环结构中被使用,循环一旦结束,循环变量失效,节省内存空间;如果将循环变量定义在for的外面,扩大了循环变量的作用范围,可能造成空间浪费。
    • b. 如果循环条件省略,则默认条件为true,可能出现死循环现象。
    • c. 循环变量的改变可以定义在 for的{}中,但是避免多次对循环变量for(循环变量的初始化;循环条件;循环变量的改变)
      for循环图解
main(){
	for(int i = 1;i <= 100;i++){
        result = result +i;
    }
	System.out.println(result);
}
5、嵌套循环
概念

在循环结构中嵌套一个完整的循环结构。(一个循环结构的循环体又是一个循环)
嵌套循环图解

循环的次数

外层循环次数*内层循环次数

循环嵌套打印图形
  • 外层循环
    控制图形的行数
  • 内层循环:控制图形的列数
流程控制关键字
  • break:结束、终止本层循环
  • continue:中止跳出本层的本次循环,从而进入本层下一次循环
  • 案例
//嵌套循环
main(){
	for(int i = 1;i <= 10;i++){
       for(int j = 1;j <= 5;j++) {
           if(i == 4 && j==3) break;
                  System.out.print("i="+i+"j"+j+"\t");
       }
        System.out.println();
    }
}
//流程控制关键字
main(){
	for(int i = 1;i <= 10;i++){
       if(i == 9) break;
       System.out.println("HelloWorld"+i);
    }
	for(int i = 1;i <= 10;i++){
       if(i == 9) continue;
       System.out.println("HelloWorld"+i);
    }
}
//流程控制关键字案例
//外层循环
//outer:
for(int i=1;i<=3;i++){
	//内层循环
	//inner:
	for(int j=1;j<=5;j++){
		if(j==3){
			continueouter;//中止、跳出外层循环的本次循环,进入外层循环的下一次
		}
		System.out.println("i="+i+",j="+j);
    }
}
//流程控制关键字案例
//外层循环
//outer:
for(int i=1;i<=3;i++){
	//内层循环
	//inner:
	for(int j=1;j<=5;j++){
		if(j==3){
			breakouter;//终止、结束外层循环结构
		}
		System.out.println("i="+i+",j="+j);
	}
}

三、局部变量【重点】

概念
  • 定义在函数/方法/初始化代码块内部的变量
  • 目前:定义在函数内部的变量称为局部变量
特点
  • 局部变量必须先赋值再使用
    错误提示:可能尚未初始化变量
  • 作用范围
    从定义它的位置开始,到定义它的代码块结束
    超出范围使用,提示错误:找不到符号
  • 命名冲突
    在重合的作用范围内,不允许命名冲突(有同名的变量名)
    错误提示:已在函数 main(String[])中定义了变量
扩充
  • 随机数生成(Random)
    • 位于java.util包中
      导入包: import java.util.Random;
    • 创建Random对象
      Random rd=new Random();
    • 使用rd生成整数
      int n=rd.nextInt(n); //自动生成0~n-1的数据

整理不易,喜欢请点个赞!
编者微信:1014961803,添加时请备注"CSDN"

发布了14 篇原创文章 · 获赞 12 · 访问量 640

猜你喜欢

转载自blog.csdn.net/qq_44664231/article/details/105177169