Java·第三章·控制结构·顺序控制·分支控制

本文详细介绍了Java程序中的顺序控制、分支控制(if-else和switch)、变量定义以及不同类型的分支结构(单分支、双分支、多分支和嵌套分支)。通过实例演示了如何在实际编程中运用这些控制结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

顺序控制

程序从上到下逐行的执行,中间没有任何判断和跳转。

  • 注意事项

    Java中定义变量时采用合法的前向引用

    public class Test{
    		int num1 = 12;
    		int num2 = num1 + 2;
    }
    

分支控制(if,else,switch)

分支控制if-else介绍

单分支

  • 基本语法
    if(条件表达式){
    		执行代码块;(可以有多条语句)
    }
    

    说明:当条件表达式为true时,就会执行{ }的代码。如果为false,就不执行。

    特别说明:如果{ }中只有一条语句,则可以不用{ }。

  • 案例说明

  import java.util.Scanner;
  public class Homework01{
	public static void main(String[] args){
		/*可以输入人的年龄,如果年龄大于18岁,
		则输入:“你年龄大于18,要对自己的行为负责,送入监狱”
		思路分析:
		1. 接收输入的年龄,定义一个Scanner对象*/
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入年龄");
		//2.把年龄保存到一个变量 int age
		int age = myScanner.nextInt();
		//3.使用if判断,输出对应信息
		if(age > 18){
			System.out.println("你年龄大于18,要对自己的行为负责,送入监狱");
		}
		System.out.println("程序继续...");
		/*请输入年龄
		21
		你年龄大于18,要对自己的行为负责,送入监狱
		程序继续...*/
	}
}

双分支

  • 基本语法
    if(条件表达式){
    		执行代码块;(可以有多条语句)
    }else{
    		执行代码块;
    }
    

    说明:当条件表达式成立,即执行代码块1,否则执行代码块2。

    特别说明:如果{ }中只有一条语句,则可以不用{ }。

  • 案例演示

 

import java.util.Scanner;
public class Homework01{
	public static void main(String[] args){
		/*可以输入人的年龄,如果年龄大于18岁,
		则输入:“你年龄大于18,要对自己的行为负责,送入监狱”,
		否则“不符合法定年龄,请监护人加强教育。”
		思路分析:
		1. 接收输入的年龄,定义一个Scanner对象*/
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入年龄");
		//2.把年龄保存到一个变量 int age
		int age = myScanner.nextInt();
		//3.使用if-else判断,输出对应信息
		if(age > 18){
			System.out.println("你年龄大于18,要对自己的行为负责,送入监狱");
		}else{
			System.out.println("不符合法定年龄,请监护人加强教育。");
		}
		System.out.println("程序继续...");
		/*请输入年龄
		18
		不符合法定年龄,请监护人加强教育。
		程序继续...*/
	}
}

 单/双分支练习题

1.

//练习1
public class Homework01{
public static void main(String[] args){
	int x = 7;
	int y = 4;
	if(x > 5){
		if(y > 5){
			System.out.println(x + y);
		}
		System.out.println("易十六~");
	}else{
		System.out.println("x is" + x);
	}//易十六~
	}
}

2.

//练习二
/*声明两个double型变量并赋值。判断第一数大于10.0,且第二个
	数小于20.0,打印两束之和*/
	double a = 11.0;
	double b = 32.0;
	if(a > 10.0 && b > 20.0){
			System.out.println("两数之和为:" + (a + b));
	}

 多分支

  • 基本语法
    if(条件表达式1){
    		执行代码块1;
    }else if(条件代码块2){
    		执行代码块2;
    }
    …………
    else{
    		执行代码块n;
    }
    

    说明:

    1. 当条件表达式1成立,即执行代码块1
    2. 如果条件表达式1不成立,才去判断表达式2是否成立
    3. 如果条件表达式2成立,就执行代码块2
    4. 以此类推,如果所有的表达式都不成立
    5. 则执行else的代码块,注意,只能有一个执行入口

    特别说明:

    1. 多分支可以没有else,如果所有的条件表达式都不成立,则一个执行入口都没有
    2. 如果有else,如果所有的条件表达式都不成立,则默认执行else代码块

 

案例演示 
import java.util.Scanner;
public class Homework01{
public static void main(String[] args){
	/*输入报国同志的芝麻信用分:如果:
	1.信用分为100时,输出 信用极好;
	2.信用分为(80,99]时,输出 信用优秀;
	3。信用分为[60,80]时,输出 信用一般;
	4.其他情况,输出 信用不及格
	5.请从键盘输入报国的芝麻信用分,并加以判断*/
	Scanner myscanner = new Scanner(System.in);
	//接收用户输入
	System.out.println("请输入信用分1-100分:");
	//先对输入的信用分,进行一个范围的有效判断1-100,否则提示输入错误
	int grade = myscanner.nextInt();
	if(grade >= 1 && grade <= 100){
		if(grade == 100){
			System.out.println("信用良好");
		}else if(grade > 80 && grade <= 99){
			System.out.println("信用优秀");
		}else if(grade >= 60 && grade <= 80){
			System.out.println("信用一般");
		}else{
			System.out.println("信用不及格");
		}
	}else{
		System.out.println("信用分需要在1-100之间,请重新输入");
	}
	/*请输入信用分1-100分:
	1023
	信用分需要在1-100之间,请重新输入
	请输入信用分1-100分:
	98
	信用优秀*/
	}
}
 练习题
public class Homework01{
public static void main(String[] args){
	boolean b = true;
	if(b = false){
		System.out.println("a");//b = flase
	}else if(b){
		System.out.println("b");//不会执行
	}else if(!b){// 取反
		System.out.println("c");// c
	}else{
		System.out.println("d");
	}
	}
}

嵌套分支

  • 基本介绍

    在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构成为内层分支,外面的分支结构称为外层分支。

    🌻 规范:不要超过3层(可读性不好)

  • 基本语法
if(){
	if(){
			//if-else...
	}else{
			//if-else...
	}
}

switch分支结构

  • 基本介绍
    1. switch关键字,表示switch分支
    2. 表达式对应一个值
    3. case常量1:当表达式的值等于常量1,就执行语句块1
    4. break:表示退出switch
    5. 如果和case常量1匹配,就执行语句块1,如果没有匹配,就继续匹配case常量2
    6. 如果一个都没有匹配上,执行default
  • 基本语法
switch(表达式){
		case 常量1:  //当……
		语句块1;
		case 常量2;
		语句块2;
		break;
		……
		case 常量n;
		语句块n;
		break;
		default;
		default 语句块;
		break;
}
 快速入门
//该程序可以接收一个字符,比如:a,b,c,d,e,f,g
//a表示星期一,b表示星期二
//根据用户的输入显示相应的信息
import java.util.Scanner;
public class Homework01{
public static void main(String[] args){
	/*思路分析
	1.接受一个字符,创建Scanner对象
	2.使用switch来完成匹配,并输出信息。*/
	Scanner myScanner = new Scanner(System.in);
	System.out.println("请输入一个字符(a-g)");
	char c1 = myScanner.next().charAt(0);
	//在java中,只要是有值返回,就是一个表达式
	switch(c1){
		case 'a':
			System.out.println("星期一");
			break;
		case 'b':
			System.out.println("星期二");
			break;
		case 'c':
			System.out.println("星期三");
			break;
		//……
		default:
			System.out.println("您输入的字符没有所匹配的内容");
	}
	System.out.println("推出了switch,继续执行程序");
	}
}
//请输入一个字符(a-g)
//c
//星期三
//退出了switch,继续执行程序
————————————————————————————
//请输入一个字符(a-g)
//k
//您输入的字符没有所匹配的内容
//推出了switch,继续执行程序
  • 细节
    1. 表达式数据类型,应和case后的常量类型一致,或者是可以自动转成可以相互比较的类型,比如输入的是字符,而常量是int

      public class Homework01{
      public static void main(String[] args){
      	char c = 'a';
      	switch(c){
      		case 'a':
      			System.out.println("ok1");/*ok1*/
      			break;
      		case 20 :
      			System.out.println("ok2");//可编译通过
      			break;
      		default:
      			System.out.println("ok3");
      	}	
      	}
      }
      
    2. switch(表达式)中表达式的返回值必须是:(byte,short,int,char,enum[枚举],String

      double c = 1.1;
      switch(c){//错误
      		case 1.1;//错误
      				System.out.println("ok3");
      				break;
      }
      
    3. case子句中的值必须是常量或常量表达式,而不能是变量

    4. default子句是可选的,当没有匹配的case时,执行default

    5. break语句用来执行完一个case分支后使程序跳出switch语句块;如果没有写break,程序会顺序执行到switch结尾,除非遇到break

      public class Homework01{
      public static void main(String[] args){
      	char c = 'a';
      	switch(c){
      		case 'a':
      			System.out.println("ok1");
      			//break;
      		case 20 :
      			System.out.println("ok2");
      			break;
      		default:
      			System.out.println("ok3");
      	}
      	System.out.println("退出了switch,继续执行……");	
      	// ok1
      	// ok2
      	// 退出了switch,继续执行……
      	}
      }
  • 练习题
    使用switch把小写类型的char型转为大写(键盘输入),只转换a,b,c,d,e,其他输出”other。 
import java.util.Scanner;
public class Homework01{
public static void main(String[] args){
	Scanner input = new Scanner(System.in);
	System.out.println("请输入a-e");
	char c1 = input.next().charAt(0);
	switch(c1){
		case 'a':
			System.out.println("A");
			break;
		case 'b':
			System.out.println("B");
			break;
		case 'c':
			System.out.println("C");
			break;
		case 'd':
			System.out.println("D");
			break;
		case 'e':
			System.out.println("E");
			break;
		default:
			System.out.println("请重新输入");
	}
	}
}//请输入a-e
//a
//A
  • 对学生成绩大于60分的,输出“合格”。低于60分的,输出不合格。(注:输入的成绩不能大于100,提示:成绩/60)
    • ❗思路分析

      1. 这道题可以使用分支来完成,但要求使用switch
      2. 这里我们需要进行一个转换:
        1. 如果成绩在[60,100],(int)(成绩/60) = 1
        2. 如果成绩在[0,60),(int)(成绩/60) = 0

      则我们通过计算来和0、1比较

import java.util.Scanner;
public class Homework01{
public static void main(String[] args){
	Scanner input = new Scanner(System.in);
	System.out.println("请输入你的成绩:");
	double score = input.nextInt();
	if(score >= 0 && score <= 100){
		switch((int)(score / 60)){
			case 0:
				System.out.println("不合格");
				break;
				/*请输入你的成绩:
				57
				不合格*/
			case 1:
				System.out.println("合格");
				break;
				/*请输入你的成绩:
				80
				合格*/
	}
}else{
		System.out.println("请重新输入,需要在0-100之间");
	}
	}
}
  • 根据用户指定月份,打印该月份所属的季节。3,4,5春季;6,7,8夏季;9,10,11秋季;12,1,2冬季(提示:使用穿透
    • ❗思路分析:
      1. 创建Scanner对象,接收用户输入
      2. 使用int month 接收
      3. 使用switch 来匹配,使用穿透来完成
import java.util.Scanner;
public class Homework01{
public static void main(String[] args){
	Scanner input = new Scanner(System.in);
	System.out.println("请输入月份:");
	int month = input.nextInt();
	switch(month){
		case 3:
		case 4:
		case 5:  //穿透
			System.out.println("春季");
			break;
		case 6:
		case 7:
		case 8:
			System.out.println("夏季");
			break;
		case 9:
		case 10:
		case 11:
			System.out.println("秋季");
			break;
		case 12:
		case 1:
		case 2:
			System.out.println("冬季");
			break;
		default:
			System.out.println("请重新输入,需要在0-100之间");
	}
	/*请输入月份:
	2
	冬季*/
} 	
}
  • switch和if的比较

    1.如果判断的具体数值不多,而且符合byte、short、int、char、enum[枚举]、String这6种类型。虽然两个语句都可以使用,建议使用switch语句。

        2. 其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Annabelle.02

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值