Switch表达式

1.语句格式:

switch(表达式) {
case1:
语句体1;
break; (中断,结束的意思)
case2:
语句体2;
break;default (默认的意思)
语句体n+1;
break;
}

2.执行流程

  • (1)表达式中的值和case中的 值1进行比较,匹配成功,就执行语句1,遇见break,switch 结束了
  • (2)依次case值2,进行比较,成立,执行语句2,语句结束…
  • (3)如果上述都不匹配,执行default中的语句,break结束.

3.注意事项

  • 1.switch结构中的表达式只能是如下6中数据类型之一:
    byte、short、char、int、枚举类型(jdk5.0新增)、String类型(jdk7.0新增)。
补充说明:
java中基本数据类型的输入包括:
整形的输入:in.nextInt();
单精度浮点型:in.nextFloat();
双精度浮点型:in.nextDouble();
字符串类型:in.next();in.nextLine();
但是并没有in.nextChar();
有时候需要我们用Scanner接收char类型数据,而不是接收String。

这时候我们可以利用如下代码解决这个问题:

Scanner in = new Scanner(System.in);
char c = in.next().charAt(i);
//把str的第i个char值赋值给c,类似于数组的查找。
//charAt(int index)方法是一个能够用来检索特定索引下的字符的String实例的方法.
//charAt()方法返回指定索引位置的char值。如: str.charAt(0)检索str中的第一个字符,str.charAt(str.length()-1)检索最后一个字符.
  • 2.case之后只能声明常量,不能声明范围。
    举例如下:
    在这里插入图片描述

4.switch语句实例

从键盘上分别输入年、月、日,判断这一天是当年的第几天。
注:判断一年是否是闰年的标准:
(1)可以被4整除,,但不能被100整除
(2)可以被400整除

代码执行如下:

import java.util.Scanner;

public class TestDemo{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入年");
        int year=sc.nextInt();
        System.out.println("请输入月份");
        int month=sc.nextInt();
        System.out.println("请输入日期");
        int day =sc.nextInt();
        //定义一个变量来保存天数
        int sumDays=0;
        switch (month){
            case 12:
                sumDays+=30;
            case 11:
                sumDays+=31;
            case 10:
                sumDays+=30;
            case 9:
                sumDays+=31;
            case 8:
                sumDays+=31;
            case 7:
                sumDays+=30;
            case 6:
                sumDays+=31;
            case 5:
                sumDays+=30;
            case 4:
                sumDays+=31;
            case 3:
                if((year%4==0&&year%100!=0)||year%400==0){
                    sumDays+=29;
                }else {
                        sumDays+=28;
                    }
            case 2:
                sumDays+=31;
            case 1:
                sumDays+=day;
        }
        System.out.println(year+"年"+month+"月"+day+"日是当年的第"+sumDays+"天");
    }
}

输入2020年5月21日执行如下:
在这里插入图片描述

输入2021年5月21日执行如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~四时春~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值