Java学习-流程控制之选择结构

流程控制之选择结构

一、Scaneer的基本使用

1.Scanner的概念

扫描器。即可以通过Scanner类扫描用户在控制台录入的数据

2.使用Scanner实现键盘录入功能的步骤
第一步:导包(位置放到class定义的上面)
import java.util.Scanner;
第二步:创建对象
Scanner sc = new Scanner(System.in);
3.代码演示
Demo1
// 1.导包
import  java.util.Scanner;

public class ScannerDemo1 {
    public static void main(String[] args) {
        // 2. 创建键盘录入对象
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入一个整数:");
        // 3.接收数据
        int i = sc.nextInt();

        // 将用户录入的数据打印到控制台上
        System.out.println("i:" + i);
    }
}
运行结果:

在这里插入图片描述

Demo2
// 1. 导包
import java.util.Scanner;

public class ScannerDemo2 {
    public static void main(String[] args) {
        // 需求:键盘录入两个整数,求它们的和
        // 2. 创建键盘录入对象
        Scanner sc = new Scanner(System.in);

        // 3. 提示用户录入数据,并接收。
        System.out.println("请录入第一个整数:");
        int a = sc.nextInt();
        System.out.println("请录入第二个整数:");
        int b = sc.nextInt();

        // 4. 计算整数和
        int sum = a + b;

        // 5. 打印结果
        System.out.println("sum:" + sum);
    }
}
运行结果:

在这里插入图片描述

二、流程控制结构概述

1.流程控制结构的概念

程序的结果跟代码的执行顺序紧密相关,通过使用一些特定的语句控制代码的执行顺序从而完成特定的功能,这就是流程控制结构。

2.流程控制结构的分类

1.顺序结构
2.选择(判断)结构
3.循环结构

3、流程控制结构之顺序结构
(1)顺序结构的概念

即程序按照代码的顺序从上往下、从左往右依次执行的代码结构。顺序结构是最简单的流程控制结构,不需要特定的语句,程序的大多数代码都是这样执行的。

(2)流程图如下

在这里插入图片描述

(3)代码演示
public class OrderDemo {
    public static void main(String[] args) {
        //顺序结构: 代码会按照从上往下,从左往右的顺序,依次逐行执行
        System.out.println("程序开始执行");
        System.out.println("A");
        System.out.println("B");
        System.out.println("C");
        System.out.println(10 + 20 + "hello");   //30hello
        System.out.println("程序执行结束");

    }
}
运行结果

在这里插入图片描述

4.流程控制结构之选择结构
(1)选择结构的概念

根据不同的条件选择不同的代码来执行的代码结构。
选择结构要先判断条件是否成立,条件成立则执行一部分代码,不成立则执行另外一部分或结束代码,所以选择结构也叫判断结构。

(2)选择结构的分类
if语句(共有三种格式):如果

if 一般用作区间值的判断,比如
当前时间为0-8点,小黑和你说:“早上好”;
当前时间为9-12点,小黑和你说:“中午好”;

switch语句:转换,切换

switch一般用作固定值的判断,比如
你说“星期一”,小黑说“Monday”
你说“星期二”,小黑说“Tuesday”

(3)选择结构if的第一种格式

if(关系表达式) {
 //具体语句
}

♦执行流程,如下图

在这里插入图片描述

♦代码演示
/*
    选择结构之if语句:
        第一种格式:
            if(关系表达式) {
                语句体1;
            }
        执行流程:
            如果关系表达式成立,则执行与具体1
            乳沟关系表达式不成立,则不执行语句体1
 */
public class IfDemo1 {
    public static void main(String[] args) {
        System.out.println("开始执行");

        // 定义两个int类型的变量
        int a = 10;
        int b = 10;

        // 判断两个变量是否相等
        if (a == b){
            // 如果能走到这里,说条件成立
            System.out.println("a和b是相等的");
        }

        System.out.println("结束执行");
    }
}

运行结果
在这里插入图片描述

(4)选择结构if的第二种格式

if(关系表达式) {
 // 语句体1
} else {
 // 语句体2
}

♦执行流程,如下图

在这里插入图片描述

♦代码演示
/*
    选择结构之if语句:
        第二种格式:
            if(关系表达式) {
                语句体1:
            } else {
                语句体2:
            }
         执行流程:
            先判断关系表达式,看其是否成立(true:成立,false:不成立)
            如果关系表达式成立,则执行语句体1
            如果关系表达式不成立,则执行语句体2
 */
public class IfDemo2 {
    public static void main(String[] args) {
        System.out.println("开始执行");
        // 需求:判断两个整数是否相等,相等则打印“相等”,不相等则打印“不相等”
        int a = 10;
        int b = 20;

        // 调用if语句的第二种格式
        if(a == b) {        // if:如果
            // 能走到这里,说明条件成立
            System.out.println("相等");
        } else {        // else:否则
            // 能走到这里,说明条件不成立
            System.out.println("不相等");
        }
        System.out.println("结束执行");
    }
}

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

(5)选择结构if的第三种格式

if(关系表达式1) {
 //语句体1
} else if(关系表达式2) {
 //语句体2
} //…
else {
 //语句体n+1
}

♦执行流程,如下图

在这里插入图片描述

♦代码演示
/*
    选择结构之if语句:
        第三种格式:
            if(关系表达式1) {
                语句体1;
            } else if(关系表达式2) {
                语句体2;
            } else if(关系表达式3) {
                语句体3;
            } else if(关系表达式n) {     // n的意思是:这里可以写多个else if(关系表达式){}
                语句体n;
            } else {
                语句体n+1;
            }
        执行流程:
        先判断表达式1,看其是否成立(true:成立,false:不成立)
        成立,则执行语句体1
        不成立,则判断关系表达式2,看其是否成立
        成立,则执行语句体2
        不成立,咋判断关系表达式3,看其是否成立
        以此类推,
        如果关系表达式n成立,则执行语句体n,否则执行语句体n+1

        需求:黑马智能机器人小黑和你打招呼
            你说0~12的数字,小黑说:上午好
            你说13~18的数字,小黑说:下午好
            你说19~24的数字,小黑说:晚上好
            你说其他数字,小黑说:我不认识这个时间!
 */
public class IfDemo3 {
    public static void main(String[] args) {
        /* 需求:黑马智能机器人小黑和你打招呼
            你说0~12的数字,小黑说:上午好
            你说13~18的数字,小黑说:下午好
            你说19~24的数字,小黑说:晚上好
            你说其他数字,小黑说:我不认识这个时间!
         */
        // 1.定义变量,记录时间
        int time = 15;      // 正确数据,边界值,错误数据

        // 2.小黑根据你的时间和你打招呼
        if (time >= 0 && time <= 12) {
            System.out.println("小黑和我说:上午好!");
        } else if (time >= 13 && time <= 18) {
            System.out.println("小黑和我说:下午好!");
        } else if (time >= 19 && time <= 24) {
            System.out.println("小黑和我说:晚上好!");
        } else {
            // 说明上述的三组条件都不满则
            System.out.println("小黑和我说:我不认识这个时间!");
        }
    }
}

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

(6)if语句案例之获取两个整数的较大值
♦代码演示
import java.util.Scanner;

public class IfDemo4 {
    public static void main(String[] args) {
        // 需求:键盘录入两个数据,获取这两个数据的最大值
        // 1.创建键盘录入对象,以便接收用户录入的数据(包含:导包,创建对象)
        Scanner sc = new Scanner(System.in);

        // 2.提示用户录入两个整数,并接收
        System.out.println("请录入第一个整数:");
        int a = sc.nextInt();
        System.out.println("请录入第二个整数:");
        int b = sc.nextInt();

        // 3. 定义变量,记录最大值
        int max;

        // 4.通过if语句的第二种格式,判断两个整数的最大值
        if (a >= b) {
            // 如果走这里,说明a大
            max = a;
        }else {
            // 如果走这里,说明b大
            max = b;
        }
        // 5.将结果打印到控制台上
        System.out.println("最大值是:" + max);
    }
}

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

(7)if语句案例之根据学生成绩输出对应级别
♦代码演示
import java.util.Scanner;

public class IfDemo6 {
    public static void main(String[] args) {
        /*
            需求:键盘录入学生考试成绩,请根据成绩判断该学生属于那个级别
            90-100              皇帝
            80-90(不包含)       宰相
            70-80(不包含)       大臣
            60-70(不包含)       县官
            60(不包含)以下       草民
         */
        // 1.创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        // 2.提示学生录入成绩,并接收
        System.out.println("请录入您的成绩:");
        int score = sc.nextInt();

        // 3.根据学生录入的成绩,和题设的条件进行对比,并按照要求进行输出即可
        if(score >= 90 && score <= 100) {
            System.out.println("皇帝");
        } else if(score >= 80 && score < 90) {
            System.out.println("宰相");
        } else if(score >= 70 && score < 80) {
            System.out.println("大臣");
        } else if(score >= 60 && score < 70) {
            System.out.println("县官");
        } else if(score < 60) {
            System.out.println("草民");
        } else {
            System.out.println("没有这样的成绩");
        }
    }
}

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

(8)选择结构之switch语句
♦switch语句格式

switch(表达式){
 case 值1:
  语句体1;
  break;
 case 值2:
  语句体2;
  break;

 default:
  语句体n+1;
  break;
}

♦流程图,如下

在这里插入图片描述

♦代码演示:
import java.util.Scanner;

public class SwitchDemo {
    public static void main(String[] args) {
        // 需求:键盘录入数字,根据数字打印其对应的星期
        // 1.创建键盘录入对象,以便接收用户录入的数字
        Scanner sc = new Scanner(System.in);

        // 2. 提示用户录入数字,并接收
        System.out.println("请录入一个数字,我来打印其对应的日期:");
        int week = sc.nextInt();

        // 3.根据用户录入的数字,打印对应的日期,通过switch语句来实现
        switch (week) {
            case 1 :
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            case 6:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期日");
                break;
            default:
                System.out.println("我不认识这样的时间");
                break;
        }
    }
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值