day04

1,昨天的回顾

  • 键盘录入整数,小数,字符串
  • 快捷键:向下复制一行 ctrl + d
public class Test01 {
    public static void main(String[] args) {
        //1,导包 --- 在idea中不需要手写了。自动生成

        //2,创建对象 --- 告诉虚拟机我要用这个类了
        Scanner sc = new Scanner(System.in);

        //3,真正的接受数据
        System.out.println("请输入一个整数");
        int number1 = sc.nextInt();

        System.out.println("请输入一个小数");
        double number2 = sc.nextDouble();

        System.out.println("请输入一个字符串");
        String str = sc.next();

        System.out.println(number1);
        System.out.println(number2);
        System.out.println(str);
        //ctrl + d 向下复制一行
    }
}

2,if的第一种格式

格式:

​ if(关系表达式){

​ 语句体;

​ }

执行流程:

​ 首先计算关系表达式的值。

​ 如果关系表达式结果是真true。那么执行语句体。

​ 如果关系表达式结果是假false。那么就不执行语句体。

案例:
public class Test02 {
    public static void main(String[] args){
        //键盘录入女婿的酒量
        Scanner sc = new Scanner(System.in);
        System.out.println("请录入女婿的酒量");
        int number = sc.nextInt();

        //对女婿的酒量来进行判断,如果酒量大于两斤,那么老丈人就给出回应
        //否则,老丈人不给出回应
        if(number > 2){
            System.out.println("你可以穿走我的小棉袄");
        }
    }
}
注意点:

1,在Java中,大括号一般都要写在上一行的末尾。不要单独的另起一行写。

ctrl alt L 格式化代码

//正确的
if(number > 2){
    System.out.println("你可以穿走我的小棉袄");
}
//在语法上是没有问题,但是不符合Java的语法习惯
if(number > 2)
{
    System.out.println("你可以穿走我的小棉袄");
}

2,以后在对一个布尔类型的变量进行判断时。

boolean flag = false;
//表示对flag变量里面值进行判断,如果为真,就执行大括号里面的语句体。
//如果为假,就不执行大括号里面的语句体。
if(flag){
    System.out.println("flag变量的值为true");
}

3,if的第二种格式

格式:

​ if(关系表达式){

​ 语句体1;

​ }else{

​ 语句体2;

​ }

执行流程:

​ 首先计算关系表达式的值。这个结果必须是布尔类型的。

​ 如果计算的结果为真true,就执行语句体1.

​ 如果计算的结果为假false,就执行语句体2.

案例:
public class Test04 {
    public static void main(String[] args) {
        //看身上的钱。如果超过100块,就吃网红餐厅
        //如果小于等于100块,就吃经济实惠的福建料理

        int money = 15000;
        if(money > 100){
            System.out.println("吃网红餐厅");
        }else{
            System.out.println("吃经济实惠的沙县大酒店");
        }
    }
}
注意点:

​ 跟三元运算符之间的转换

如果代码比较简单的话,我建议用三元运算符。

如果题目的要求比较复杂,我建议使用if的第二种格式。

结论:

​ 如果if第二种格式中语句体,只有一行代码。此时改写为三元运算符会让代码变得简单。

​ 如果if第二种格式中语句体,代码大于等于两行。此时就不要写三元运算符了。

4,if的第三种格式

格式:

if(关系表达式1){

​ 语句体1;

}else if(关系表达式2){

​ 语句体2;

}…

else{

​ 语句体n +1 ;

}

执行过程:

首先,会计算第一个关系表达式。如果为真true,执行里面的语句体。当语句体执行完毕,那么整体执行完毕。

如果第一个关系表达式为假false,继续往下判断,如果所有的关系表达式都为假,那么才执行最后一个else。

简单理解:

​ 从上往下依次判断,只要有一个为真,那么就执行对应的语句体。

​ 如果所有的都为假,那么才执行最后一个else。

案例:
public class Test07 {
    public static void main(String[] args) {
        //定义 一个变量表示小明的成绩
        //合法数据: 0~100 小于0还有大于100的都算是非法数据
        int score = 90;

        if(score < 0  ||  score > 100){
            System.out.println("当前分数是不合法的");
        }else if (score >= 95 && score <= 100) {
            System.out.println("买自行车一辆");
        }else if(score >= 90 && score <= 94){
            System.out.println("游乐场玩一天");
        }else if(score >= 80 && score <= 89){
            System.out.println("送变形金刚一个");
        }else{
            System.out.println("胖揍一顿");
        }
    }
}
注意点1:

​ 在这个格式中,如果我们不需要最后一个扫尾,那么else可以省略不写。

//需求:不管小明考多少分,只奖励,不揍了,天天打怪可怜的。
int score = 90;
if(score < 0  ||  score > 100){
    System.out.println("当前分数是不合法的");
}else if (score >= 95 && score <= 100) {
    System.out.println("买自行车一辆");
}else if(score >= 90 && score <= 94){
    System.out.println("游乐场玩一天");
}else if(score >= 80 && score <= 89){
    System.out.println("送变形金刚一个");
}
注意点2:
int number = 10;
if(number == 10){
    System.out.println("AAA");
}else if(number == 10){
    System.out.println("BBB");
}else if(number == 10){
    System.out.println("CCC");
}else if(number == 10){
    System.out.println("DDD");
}else if(number == 10){
    System.out.println("EEE");
}else{
    System.out.println("FFF");
}
//输出结果:AAA
从上往下依次判断,如果遇到满足的,就执行对应的语句体。
当这个语句体执行完毕时候,那么整个整体就全部执行完毕了。
如果所有的判断都不满足,那么才会执行到else

5,小结

if的第一种:适用于单一场景的判断。

if的第二种:适用于两个场景的判断。

if的第三种:适用于多个场景的判断。

​ 如果第一个满足,就执行第一个。

​ 如果第二个满足,就执行第二个。

​ 。。。。

​ 如果都不满足,就执行最后一个elese。

6,switch

格式:

​ switch(表达式/值/变量){

​ case 值1:

​ 语句体1;

​ break;

​ case 值2:

​ 语句体2;

​ break;

​ case 值3:

​ 语句体3;

​ break;

​ 。。。

​ default:

​ 语句体n+1;

​ break;

​ }

执行流程:

​ 首先会计算小括号中的结果。

​ 拿着这个结果跟每一个case后面的值匹配。一旦匹配上了,就执行对应的语句体。

​ 如果所有的都没有匹配上,才执行default。

注意点:
  • 小括号中结果比如为:byte、short、int、char

    ​ JDK5以后可以写枚举(就业班会学习)

    ​ JDK7以后可以写字符串

  • case 后面的值不能重复的

  • case 后面的值只能是常量,不能是变量

  • break 表示停止,跳出。结束switch语句。

  • default 跟if里面的else是一样的。

案例:
package com.heima;

import java.util.Scanner;

public class SwitchDemo {
    public static void main (String[]args){

        //表达式(将要匹配的值)取值为byte int short char JDk5以后枚举,JDK7以后String
       Scanner sc= new Scanner(System.in);
        String i =sc.next();
        switch (i) {
            case "sb":
                System.out.println("吴骚");
                break;
            case "ztr":
                System.out.println("臧儿");
                break;
            case "书记":
                System.out.println("绿");
                break;
            case "高豪":
                System.out.println("乖乖");
                break;
            //else一样可省略
            default:
        }
    }
}

public class SwitchDemo {
    public static void main(String[] args) {

        //键盘录入星期数。
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入星期数");
        int week = sc.nextInt();

        //跟录入的数字进行匹配
        switch (week){//最终的结果,byte short int char String
            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;
        }

    }
}
package com.heima;

import java.util.Scanner;

public class SwitchDemo01 {
    public static void main (String[]args){

        System.out.println("请输入星期数");
        System.out.println("输入如下所示否则为无效输入星期(一二三四五六日)");
        Scanner sc  =  new Scanner(System.in);
        String day =sc.next();
        switch (day){
            case "周一"://case值为常量,且不能重复
                System.out.println("跑步");
                break;
            case "周二":
                System.out.println("游泳");
                break;
            case"周三":
                System.out.println("慢走");
                break;
            case"周四":
                System.out.println("动感单车");
                break;
            case"周五":
                System.out.println("拳击");
                break;
            case "周六":
                System.out.println("爬山");
                break;
            case"周日":
                System.out.println("好好吃一顿");
                break;
            default:
                System.out.println("无效输入");
                break;
        }
    }
}

7,case穿透

概念:

​ 在switch语句中,首先会执行对应case里面的语句体。如果当前case语句体中有break,那么执行完后就会停止。如果当前case的语句体中,没有break。会继续往下执行其他case的语句体。一直执行到break或者右大括号为止。

案例1:
package com.heima;

import java.util.Scanner;

public class SwitchDemo02 {
    public static void main(String[]args){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入月份");
        int i = sc.nextInt();
        switch (i){
            case 1://case穿透
            case 2:
            case 12:
                System.out.println("冬天");
                break;//终止case穿透
            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;

            default:
                System.out.println("输入无效");
                break;

        }

    }
}
int number = 10;
switch (number){
    case 5 :
        System.out.println("AAA");
        break;
    case 10 :
        System.out.println("BBB");
        break;
    case 15 :
        System.out.println("CCC");
    case 20 :
        System.out.println("DDD");
        break;
    default:
        System.out.println("EEE");
        break;
}

运行结果: BBB

首先看number为10,就拿着10跟下面所有的case进行匹配。

此时发现,有case10,所以执行case10里面的语句体。打印BBB,打印完毕之后发现break

所以整个swtich停止。

案例2:
int number = 10;
switch (number){
    case 5 :
        System.out.println("AAA");
        break;
    case 10 :
        System.out.println("BBB");
    case 15 :
        System.out.println("CCC");
    case 20 :
        System.out.println("DDD");
    default:
        System.out.println("EEE");
}

运行结果:BBB CCC DDD EEE

首先还是看number的值,发现为10.

拿着10跟下面所有的case进行匹配。有case10,所以直接运行case10后面的语句体。

当执行完毕之后发现,没有break,所以继续往下穿透。输出DDD。输出完毕之后发现还是没有break

所以继续往下穿透。

所以最终结果为:BBB CCC DDD EEE

案例3:
int number = 30;
switch (number){
   default:
        System.out.println("EEE");    
    case 10 :
        System.out.println("BBB");
    case 5 :
        System.out.println("AAA");
    case 15 :
        System.out.println("CCC");
        break;
    case 20 :
        System.out.println("DDD");
}

运行结果:EEE BBB AAA CCC

首先还是看number的值,发现是30。

然后拿着30去跟下面所有的case进行匹配。发现没有case能匹配上。

所以执行default。而default后面是没有break的。所以往下穿透。

案例4:
int number = 30;
switch (number){ 
    case 10 :
        System.out.println("BBB");
    case 5 :
        System.out.println("AAA");
    default:
        System.out.println("EEE"); 
    case 15 :
        System.out.println("CCC");
        break;
    case 20 :
        System.out.println("DDD");
}

运行结果:EEE CCC

首先还是看number的值,发现是30。

此时会跟下面所有的case进行匹配,发现没有case可以匹配上。

所以执行default。打印EEE,打印完毕之后发现没有break

所以继续往下穿透,打印CCC,打印完毕之后发现,有break,所以结束。

案例5:
public class SwitchDemo7 {
    public static void main(String[] args) {
        //键盘录入星期
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数表示星期:1-7");
        int week = sc.nextInt();
        //对week进行判断
        switch (week){
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                System.out.println("工作日");
                break;
            case 6:
            case 7:
                System.out.println("休息日");
                break;
            default:
                System.out.println("输入的星期有误");
                break;
        }
    }
}

8,switch 跟 if的第三种格式

if:当我们要对一个范围进行判断的时候,只能使用if的第三种格式

switch:当我们要把有限个东西一一列举出来,让你任选其一的时候。

9,两个练习

练习一:

public class Test09 {
    public static void main(String[] args) {
        /*如果⼩于等于10, 提⽰⼩屁孩,
        如果⼤于10, ⼩于等于 20, 提⽰叛逆的青春期
        如果⼤于20, ⼩于等于30. 提⽰开始混社会的⼩ 屁孩⼉,
        如果⼤于30, ⼩于等于40. 提⽰看老⼤不⼩了
        如果⼤于40, ⼩ 于等于50. 提⽰家⾥有个不听话的⼩屁孩⼉.
        如果⼤于50, ⼩于等于60. 提⽰⾃⼰⻢上变成不听 话的老屁孩⼉.
        如果⼤于60, ⼩于等于70. 提⽰退休了.
        如果⼤于70, ⼩于 等于100. 提⽰还能浪几年.
        如果⼤于100以上. 提⽰. 拜拜了您呐.*/


        //定义一个变量表示年龄
        int age = -10;
        if (age >= 0 && age <= 10) {
            System.out.println("⼩屁孩");
        } else if(age > 10 && age <= 20){
            System.out.println("叛逆的青春期");
        }else if(age > 20 && age <= 30){
            System.out.println("开始混社会的⼩ 屁孩⼉");
        }else if(age > 30 && age <= 40){
            System.out.println("老⼤不⼩了");
        }else if(age > 40 && age <= 50){
            System.out.println("家⾥有个不听话的⼩屁孩⼉.");
        }else if(age > 50 && age <= 60){
            System.out.println("⾃⼰⻢上变成不听 话的老屁孩⼉.");
        }else if(age > 60 && age <= 70){
            System.out.println("退休了");
        }else if(age > 70 && age <= 100){
            System.out.println("能浪几年");
        }else if(age > 100){
            System.out.println("拜拜了您呐");
        }else{
            System.out.println("年龄有误");
        }

    }
}

练习二:

public class Test10 {
    public static void main(String[] args) {
//        定义一个整数类型的变量,赋值为1~100之间的数。
//        键盘录入猜这个数字。
//        如果猜的数字大了,则提示大了。
//        如果猜的数字小了,则提示小了。
//        如果猜中了,则提示恭喜,猜中了。


        //1.定义一个变量,赋值1-100
        int number = 50;

        //2.键盘录入一个数,去猜number变量里面的值是多少?
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个数");
        int guessNumber = sc.nextInt();//如果键盘录入的数 不在1-100这个范围
//        //3.判断
//        if(guessNumber < 1 || guessNumber > 100){
//            System.out.println("当前输入的数字不在范围当中");
//        }else if(guessNumber > number){
//            System.out.println("大了");
//        }else if(guessNumber < number){
//            System.out.println("小了");
//        }else{
//            System.out.println("猜中了");
//        }

        if (guessNumber >= 1 && guessNumber <= 100) {
            if (guessNumber > number) {
                System.out.println("大了");
            } else if (guessNumber < number) {
                System.out.println("小了");
            } else {
                System.out.println("猜中了");
            }
        }else{
            System.out.println("当前猜的数字不在范围当中");
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值