基础第一阶段day03——switch选择语句注意事项 与 选择/循环语句 习题

本文详细介绍了Java中的switch选择语句,包括其使用条件和注意事项,如类型限制、常量要求和break的使用。此外,还提供了多个实战习题,涉及根据月份输出季节、筛选不含9的整数、打印99乘法表、寻找特定数值规律以及解决数学问题等,旨在加深对switch和循环语句的理解与应用。

switch选择语句 :

 public static void main(String[] args) {
        float num=3L;

        switch ((int)num){	//(int)3.0
            default:
                System.out.println("全部不匹配");
                break;
            case 1:
                System.out.println("一");
                break;
            case (int)2.0:
                System.out.println("二");
                break;
        }
}

注意事项总结:

  1. switch小括号里的条件规定:

(1)可以是一个常量,可以是一个变量,也可以是一个公式;

(2)switch小括号里的类型只能是 byte , short , char , int ; jdk1.5后增加了enum, jdk1.7后增加了String;

注意:long不可用

(3)你可以强制类型转换一个变量,也可以强制类型转换一个常量,只要满足第二点的类型就行。

  1. switch方法体里的使用规定:

(1)首先,case后面跟的值必须是一个常量,你可以写成case 1:这样的,也可以写成 case (int)1.0: 这样的,但是他必须是一个常量;

(2)case后面跟的常量的类型必须是switch条件表达式里的类型;

(3)case和default的顺序无所谓,switch语句的执行流程是将所有的case同时加载到内存中,执行与关系表达式匹配的那个case,如果没有匹配的就执行default;

(4)case 语句后面最好跟着break,因为case具有穿透作用;当你执行完对应的case/default语句,遇到break或者右大括号就直接跳出switch语句。对应语句如果没有break,此时也没有到方法的“}”,他就不会再判断下面的case值是什么,直接穿透case执行下面case中的语句,直到遇到break或者方法的“}”为止;

(5)case的值一定不能重复,否则直接报错。

========================================================================================================================================================

switch语句、循环语句习题 :

第一题:分析以下需求并实现
1.功能描述:给定月份,输出对应的季节
2.要求:
(1)定义一个月份,例如:int month = 5;
(2)输出该月份对应的季节
3,4,5春季
6,7,8夏季
9,10,11秋季
12,1,2冬季
(3)演示格式如下:
定义的月份:5
控制台输出:5月份是春季

public class Test03 {
    public static void main(String[] args) {
        /*第一题:分析以下需求并实现
        1.功能描述:给定月份,输出对应的季节
        2.要求:
        (1)定义一个月份,例如:int month = 5;
        (2)输出该月份对应的季节
        3,4,5春季
        6,7,8夏季
        9,10,11秋季
        12,1,2冬季
        (3)演示格式如下:
        定义的月份:5
        控制台输出:5月份是春季*/

        int month = 1;

 //解法一:if- else if -else解法
        if (month >= 3 && month <= 5) {							//第一种写法
            System.out.println(month + "月份是春季");
        } else if (month == 6 || month == 7 || month == 8) { 	//第二种写法
            System.out.println(month + "月份是夏季");
        } else if (month >= 9 && month <= 11) {
            System.out.println(month + "月份是秋季");
        } else if (month == 12 ||(month>=1&&month<=2) {		//第三种写法
            System.out.println(month + "月份是冬季");
        } else {
            System.out.println("没有" + month + "月份,输入有误,请重新输入");
        }
 //解法二:switch语句解法
        switch (month) {
            case 3:
            case 4:
            case 5:
                System.out.println(month + "月份是春季");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println(month + "月份是夏季");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println(month + "月份是秋季");
                break;
            case 12:
            case 1:
            case 2:
                System.out.println(month + "月份是冬季");
                break;
            default:
                System.out.println("没有" + month + "月份,输入有误,请重新输入");
                break;
        }
    }
}

============================================================================
第二题:分析以下需求并实现
1.打印1到100之内的整数,但数字中包含9的要跳过
2.每行输出5个满足条件的数,之间用空格分隔

public class Test04 {
    public static void main(String[] args) {
        /*第二题:分析以下需求并实现
        1.打印1到100之内的整数,但数字中包含9的要跳过
        2.每行输出5个满足条件的数,之间用空格分隔
        3.如:1 2 3 4 5*/

        //定义一个计数器count,记录打印次数
        int count=0;
        for (int i = 1; i <= 100; i++) {
            //包含9的有个位是9的——————i%10==9
            //包含9的有十位是9的——————i/10==9
            if (i % 10 == 9 || i / 10 == 9) {	//重点思路
                continue;
            }
            System.out.print(i+"\t");						
            count++;						//打印一个记录一个,记录到5的倍数的时候换行

            if(count%5==0){
                System.out.println();		
            }
        }
    }
}

============================================================================
第三题:分析以下需求并实现
1.使用嵌套循环完成99乘法表的打印
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9

public class Test05 {
    public static void main(String[] args) {
        /*第五题:分析以下需求并实现
        1.使用嵌套循环完成99乘法表的打印
        1*1=1
        1*2=2	2*2=4
        1*3=3	2*3=6	3*3=9
		...*/

        for (int i = 1; i <= 9; i++) {

            for (int j = 1; j <=i; j++) {
                System.out.print(j+"*"+i+"="+i*j+"\t");
            }
            System.out.println();
        }
    }
}

============================================================================

第四题:分析以下需求,并用代码实现:
1.按照从大到小的顺序输出四位数中的 个位+百位=十位+千位(3553,2332,1166,8228,3773)的数字及个数
2.每行输出5个满足条件的数,之间用空格分隔
3.如:9999 9988 9977 9966 9955

public class Test06 {
    public static void main(String[] args) {
        /*第四题:分析以下需求,并用代码实现:
        1.按照从大到小的顺序输出四位数中的  个位+百位=十位+千位(3553,2332,1166,8228,3773)的数字及个数
        2.每行输出5个满足条件的数,之间用空格分隔
        3.如:9999 9988 9977 9966 9955*/
        int count = 0;
        for (int i = 1000; i <= 9999; i++) {

            int ge = i % 10;
            int shi = (i % 100) / 10;
            int bai = (i % 1000) / 100;
            int qian = i / 1000;

            if (ge + bai == shi + qian) {
                System.out.print("" + qian + bai + shi + ge + "\t");
                count++;
                //注意,由于筛选到符合要求的数中间需要剔除很多数,控制台上打印输出可能会有很大的间隙,所以把换行判断语句放在输出数的if内部
                if (count % 5 == 0) {
                    System.out.println();
                }
            }

        }
        System.out.println("共有" + count + "个符合要求");
    }
}

============================================================================
第五题:分析以下需求,并用代码实现:
1.珠穆朗玛峰高度为8848米,有一张足够大的纸,厚度为0.0001米。
2.请问,我折叠多少次,可以折成珠穆朗玛峰的高度。

public static void main(String[] args) {
        double height = 8848;
        double paper = 0.0001;
        int count = 0;
        while (height > paper) {
            paper *= 2;
            count++;
        }
        System.out.println(count+"次");	//27次
        System.out.println("此时纸的厚度是" + paper);	//此时纸的厚度是13421.7728
    }
}

第五题辅助理解:计算机中的浮点数其实都是不精确的数,比如:

 double num=1.1*2.2;//
 System.out.println(num);//2.4200000000000004

============================================================================
第六题:下面的代码执行完x的值是()
在这里插入图片描述
A、35
B、36
C、34
D、16

解析:

switch 表达式里的值是15,
因此30++向下穿透,
31+=2变成33向下穿透,
33+=3变成36向下穿透,
–36变成35结束,选A。

============================================================================

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值