栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java | 流程控制-分支控制

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java | 流程控制-分支控制

目录

一、顺序控制

二、块作用域

三、分支控制

3.1 单分支 if

3.2 双分支 if...else

3.3 多分支 if...else if ...else

3.4 嵌套分支

3.5 选择语句 switch


一、顺序控制

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

public class Test{
    //正确形式
	int a = 1;
    int b = a;
    
    // 错误形式
    int c = d + 1;
    int d = 2;
}

二、块作用域

块(即复合语句)是指由一对大括号括起来的若干条简单的 Java 语句。块确定了变量的作用域。一个块可以嵌套在另一个块中。不能在嵌套的两个块中声明同名的变量。

public static void main(String[] args) {
    int n;
    ...
    {
        int k; 
        // 这里就不能定义变量n了
    } // k的作用域只到这里
}

三、分支控制

如果判断的具体数值不多,而且符合 byte、short、int、char、enum[枚举]、String 这6种类型,建议使用 swtich语句。

对于区间判断,结果为 boolean 类型判断,建议使用 if,if 的使用范围更广。

3.1 单分支 if
if(条件) {
    语句体;
}

当条件表达式为ture时,会执行 { } 中的代码。如果为false,则不执行。如果 { } 中只有一条语句,则可以省略 { },建议写上。

执行流程:

  1. 首先判断条件是true还是false
  2. 如果是true就执行语句体
  3. 如果是false就不执行语句体
import java.util.Scanner;
public class If01 {
    public static void main(String[] args) {
        // 定义一个scanner对象
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入大小:");
        // 把大小保存到一个int变量age中
        int size = scanner.nextInt();
        // 使用if判断,输出对应的信息
        if (size >= 18) {
            System.out.println("我的很大,你忍一下");
        }
        System.out.println("程序继续运行....");
        scanner.close();
    }
}

3.2 双分支 if...else
if(条件) { 
    语句体1; 
}else { 
    语句体2; 
}

当条件表达式成立,执行语句体1,否则执行语句体2。

执行流程:

  1. 首先判断条件是true还是false
  2. 如果是true就执行语句体1
  3. 如果是false就执行语句体2
import java.util.Scanner;
public class If02 {
    public static void main(String[] args) {
        // 定义一个scanner对象
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入大小:");
        // 把size保存到一个int变量size中
        int size = scanner.nextInt();
        // 使用if判断,输出对应的信息
        if (size >= 18) {
            System.out.println("我的很大,你忍一下");
        } else {
            System.out.println("吴签");
        }
        System.out.println("程序继续运行....");
        scanner.close();
    }
}

3.3 多分支 if...else if ...else
if (判断条件1) { 
    执行语句1; 
} else if (判断条件2) { 
    执行语句2; 
} 
... 
}else if (判断条件n) { 
    执行语句n; 
} else { 
    执行语句n+1; 
}

多分支可以没有else,如果所有的条件都不成立则不执行分支中的代码。如果有else,当所有的条件不成立时,则默认执行else代码块中的代码。

执行流程:

  1. 首先判断关系表达式1看其结果是true还是false
  2. 如果是true就执行语句体1
  3. 如果是false就继续判断关系表达式2看其结果是true还是false
  4. 如果是true就执行语句体2
  5. 如果是false就继续判断关系表达式…看其结果是true还是false
  6. 如果没有任何关系表达式为true,就执行语句体n+1。
import java.util.Scanner;
public class If03 {
    public static void main(String[] args) {
        
        // 定义一个scanner对象
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入信用分数(1-100):");
        // 把信用分保存到一个int变量grade中
        int grade = scanner.nextInt();
        if (grade >= 1 && grade <= 100) {
            // 使用if判断,输出对应的信息
            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("信用不及格");
            }
            scanner.close();
        } else {
            System.out.println("信用分需要在1-100,请重新输入!");
        }
    }
}


3.4 嵌套分支

在一个分支结构中完整的嵌套了另一个完整的分支结构,里面的分支结构成为内层分支,外面的分支结构成为外层分支。建议不要超过3层,可读性不好。

if() {
	if() {
    	// if - else ...
    } else {
    	// if - else
    }
}

3.5 选择语句 switch
switch(表达式) { 
    case 常量值1: 
        语句体1; 
        break; 
    case 常量值2: 
        语句体2; 
        break; 
    ... 
    default: 
        语句体n+1; 
        break; 
}
  • switch语句中,case后面的值不可以重复,必须是常量,并且类型保持一致或者可以自动转型。
  • 表达式的数据类型,可以是byte,short,int,char,enum(枚举),JDK7后可以接收字符串。
  • 如果case的后面不写break,将出现穿透现象,不会判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。
  • 如果都没有匹配上,则执行default中的语句,default也可以不写。

执行流程:

  1. 首先计算出表达式的值
  2. 和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
  3. 如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
import java.util.Scanner;
public class Switch01 {
    public static void main(String[] args) {
        // 请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g
        // a 表示星期一,b 表示星期二 …
        // 根据用户的输入显示相应的信息.要求使用 switch 语句完成
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个字符(a-g):");
        char c1 = scanner.next().charAt(0); // .charAt(0) 表示获取第一个字符
        char c2 = 'e';
        switch (c1) {
            case 'a':
                System.out.println("今天是星期一");
                break;
            case 'b':
                System.out.println("今天是星期二");
                break;
            case 'c':
                System.out.println("今天是星期三");
//                break;
                // 会出现穿透情况
                
            case 'd':
                System.out.println("今天是星期四");
                break;
                
            // case 后面不能加变量,必须是常量或者常量表达式
//            case c2:
//                System.out.println("今天是星期五");
//                break;

            case 'f':
                System.out.println("今天是星期六");
                break;
                // case后的类型必须和switch表达式中结果的类型一致或者可以自动转成相互比较的类型

                //            case "g":
//                System.out.println("今天是星期日");
//                break;
                
              // default 语句可以不写
//            default:
//                System.out.println("你输入的字符不对,没有匹配的");
        }
        System.out.println("switch退出了,继续执行程序");
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/357791.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号