java day03 选择结构和分支结构



1、选择结构

概念:根据已知条件进行逻辑判断,满足条件后执行相应的操作

2、基本if选择结构

2.1基本if选择结构

语法:
if(关系表达式){
语句体
}
判断关系表达式返回的结果,如果为true则执行语句体,如果返回false则不执行语句体

执行流程:

  • 对布尔表达式进行判断。
  • 结果为true,则先执行代码块,再执行后续代码。
  • 结果为false,则跳过代码块,直接执行后续代码。

代码示例:

package Day03;

import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入你的年龄:");

        int age = input.nextInt();
        if (age >= 18){
            System.out.println("你已经成年");
        }
        System.out.println("程序结束");
    }
}

2.2 if else选择结构

语法:
if(布尔表达式){
//代码块1
}else{
//代码块2
}

执行流程:

  • 对布尔表达式进行判断。
  • 判断关系表达式返回的结果,如果为true则执行语句体,如果返回false则不执行语句体

代码示例:

public class Demo03 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入年龄");
        //获取控制台录入的数据并赋值为int类型的变量,变量名为age
        int age = sc.nextInt();
        if(age >= 18){
            System.out.println("你已成年");
        }else{
            System.out.println("你未成年");
        }
        System.out.println("程序结束");
    }
}

2.3 多重if else选择结构

语法:
f(关系表达式1){
语句体1
}else if(关系表达式2){
语句体2
}else if(关系表达式3){
语句体3
}else{
语句体4
}

执行流程:

  • 关系表达式1返回的结果如果为true则运行语句体1,结束if语句
  • 如果关系表达式1返回的是false,判断关系表达式2,如果为true则运行语句体2,结束if语句
  • 如果关系表达式2返回的是false,判断关系表达式3…
  • 如果前面的if和else if 判断都为false,则执行else里面的语句体

代码示例:

public class Demo04 {
    public static void main(String[] args) {
        //Alt+回车
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的年龄");
        int age = sc.nextInt();
        if(age < 10){
            System.out.println("熊孩子你好");
        }else if(age <18){
            System.out.println("精神小伙");
        }else if(age <30){
            System.out.println("社会精英");
        }else if(age <50){
            System.out.println("猛男大叔");
        }else{
            System.out.println("糟老头子");
        }
        System.out.println("程序结束");
    }
}

2.4 嵌套if选择结构

**

语法:
if(外层表达式){
if(内层表达式){
//内层代码块1
}else{
//内层代码块2
}
}else{
//外层代码块
}

执行流程:

  • 当外层条件满足时,再判断内层条件。

代码示例:

public class Demo05 {
    public static void main(String[] args) {
        //Alt+回车
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的年龄");
        int age = sc.nextInt();
        //在进行年龄段判断前,判断年龄是否合理
        if(age > 0 && age < 150){
            if(age < 10){
                System.out.println("熊孩子你好");	
            }else if(age <18){
                System.out.println("精神小伙");
            }else if(age <30){
                System.out.println("社会精英");
            }else if(age <50){
                System.out.println("猛男大叔");
            }else{
                System.out.println("糟老头子");
            }
        }else{
            System.out.println("你输入的年龄有误");
        }
        System.out.println("程序结束");
    }
}

3、switch分支结构

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

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

操作流程:
当程序运行到switch语句的时候,表达式与数值1进行比较,

如果返回true,则执行语句体1,当遇到break,则结束switch语句
如果返回false,则与数值2进行比较,
如果与数值2比较的结果是true,则执行语句体2,当遇到break,则结束switch语句
如果返回false,则与数值3进行比较,

如果表达式与所有数值进行比较均返回false,则执行default里的语句体

代码示例:

package Day03;

import java.util.Scanner;

public class switchTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入数字1-7:");

        int num = sc.nextInt();
        switch (num){
            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 61:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期日");
                break;
            default:
                System.out.println("输入错误,不在范围(1-7)");
        }
    }
}

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

package Day03;

import java.util.Random;

public class switchTest02 {
    public static void main(String[] args) {
        System.out.println("-----今天吃什么选择器-----\n");
        int i = 1;
        while(i<=27){
            Random ra = new Random();
            //nextInt() --  生成int类型的随机数,范围为[0,1),包含0不包含1
        	//nextInt(8) -- 生成int类型的随机数,范围为[0,8),包含0不包含8
        	//nextInt(8) + 1 -- 生成int类型的随机数,范围为[0,8),包含0不包含8,
        	//然后再基础上加1,则为[1,9),包含1不包含9
            int num = ra.nextInt(8)+1;

            int num1 = ra.nextInt(25);
            int num2 = ra.nextInt(61);
            int num3 = ra.nextInt(61);
            System.out.println("----------"+i+"----------");

            switch (num){
                case 1:
                    System.out.print("今天吃:猪肚鸡");
                    System.out.println(num1+":"+num2+":"+num3);
                    break;

                case 2:
                    System.out.println("今天吃:吃火锅");
                    System.out.println(num1+":"+num2+":"+num3);
                    break;

                case 3:
                    System.out.println("今天吃:黄焖鸡");
                    System.out.println(num1+":"+num2+":"+num3);
                    break;

                case 4:
                    System.out.println("今天吃:螺蛳粉");
                    System.out.println(num1+":"+num2+":"+num3);
                    break;

                case 5:
                    System.out.println("今天吃:宫保鸡丁");
                    System.out.println(num1+":"+num2+":"+num3);
                    break;

                case 6:
                    System.out.println("今天吃:梅州腌面");
                    System.out.println(num1+":"+num2+":"+num3);
                    break;

                case 7:
                    System.out.println("今天吃:沙县国际连锁大酒店");
                    System.out.println(num1+":"+num2+":"+num3);
                    break;

                case 8:
                    System.out.println("吃条铁,吃什么吃");
                    System.out.println(num1+":"+num2+":"+num3);
                    break;
            }
            i++;
        }
    }
}

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

注 意 : \color{red}{ 注意: }

  • 进行范围判断选择使用if语句 进行等值判断选择使用switch语句 break是否
  • 可以忽略不写 break 在 switch
  • 语句中是结束 switch 语句的作用 当其中一个 case 判断返回 true ,执行对应的语句体后如果没有 break,则继续往下执行下一个 case 的内容,直到遇到 break 或者整个 switch 语句结束。
  • default是否可以不写:可以
  • default位置是否要在最后 如果每个 case 语句都包含 break ,default 的位置则在哪都不影响程序的执行 如果存在
  • case 语句缺失 break,则 default 的位置则会影响程序的执行。

4、课后作业

题目:

根据你的收入进行购车
如果你的月收入5k以下,购买雅迪电动车
月收入5k-10k,购买比亚迪
月收入10k-20k,购买奥迪
月收入20k-50k,购买保时捷
月收入50k以上,购买玛莎拉蒂

代码示例:

package homework;

import java.util.Scanner;

/**
 * @author Ran
 * @since JDK 1.8
 *      根据你的收入进行购车
 *          如果你的月收入5k以下,购买雅迪电动车
 *          月收入5k-10k,购买比亚迪
 *          月收入10k-20k,购买奥迪
 *          月收入20k-50k,购买保时捷
 *          月收入50k以上,购买玛莎拉蒂
 *
 */
public class work01 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(true){
            System.out.print("\n请输入你的月收入,单位为K(输入“-1”结束程序):");
            double income = sc.nextDouble();
            if (income==-1){
                break;
            }
            if(income >=50){
                System.out.println("大佬买玛莎拉蒂吧");
            }else if(income>=20){
                System.out.println("保时捷不错");
            }else if (income>=10){
                System.out.println("可以买奥迪了");
            }else if (income>=5){
                System.out.println("国产之光比亚迪");
            }else if(income>0){
                System.out.println("好家伙,雅迪电动车给我冲");
            }else{
                System.out.println("输入有误,请重新输入");
            }
        }
    }
}

end、最后

今天到此为止吧,明天依旧光芒万丈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值