java流程控制——分支结构(switch-case)

1、switch(表达式){ 
case 常量1: 
执行语句1; 
// break; 
case 常量2: 
执行语句2; 
// break; 
… … 
case 常量N: 
执行语句N; 
// break; 
default: 
    执行语句; 
    // break; 

2、说明:
①根据Switch表达式的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。当调用完执行语句以后,则仍然继续向下执行其他的case结构中的执行语句,直到遇到break关键字或此switch-case结构末尾为止结束。
② break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构。
③switch结构中的表达式,只能是如下6种数据类型之一:byte、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)。
④case后面只能声明常量,不能声明范围。
⑤break关键字是可选的。
⑥default相当于if-else结构中的else,default结构是可选的。

switch-case练习1

1、使用 switch 把小写类型的 char型转为大写。只转换 a, b, c, d, e. 其它的输
出 “other”。
提示:String word = scan.next(); char c = word.charAt(0); switch(c){}

import java.util.Scanner;
class SwitchCaseExer1 {
	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);
		System.out.println("请输入需要转换的字符:");
		String word = scan.next();
		char c = word.charAt(0);
		
		switch (c)
		{
		case 'a':
			System.out.println('A');
			break;
		case 'b':
			System.out.println('B');
			break;
		case 'c':
			System.out.println('C');
			break;
		case 'd':
			System.out.println('D');
			break;
		default:
			System.out.println("other");
			break;
		}

	}
}

switch-case练习2

2、对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。

说明:如果switch-case结构中的多个case的执行语句相同,则可以考虑进行合并。

import java.util.Scanner;
class SwitchCaseExer2 {
	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);
		System.out.println("请输入考试成绩:(0-100)");
		int score = scan.nextInt();

		switch (score / 10){
		case 0:
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
			System.out.println("不及格");
			break;
		case 6:
		case 7:
		case 8:
		case 9:
		case 10:
			System.out.println("及格");
			break;
		}

		//更优的解决方法
		switch (score / 60){
		case 0:
			System.out.println("不及格");
			break;
		case 1:
			System.out.println("及格");
			break;
		}

	}
}

switch-case练习3

3.根据用于指定月份,打印该月份所属的季节。
    3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季

import java.util.Scanner;
class SwitchCaseExer3 {
	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);
		System.out.println("请输入月份:(1-12)");
		int month = scan.nextInt();

		switch (month)
		{
		case 3:
		case 4:
		case 5:
			System.out.println("spring");
			break;
		case 6:
		case 7:
		case 8:
			System.out.println("summer");
			break;
		case 9:
		case 10:
		case 11:
			System.out.println("autumn");
			break;
		case 12:
		case 1:
		case 2:
			System.out.println("winter");
			break;
		
		}
	}
}

switch-case练习4

4、编写程序:从键盘上输入2019的“month”和“day”,要求通过程序输出输入的日期为2019年的第几天。

说明:break在switch-case中是可选的。

import java.util.Scanner;
class SwitchCaseExer4 {
	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);
		System.out.println("请输入月份:(1-12)");
		int month = scan.nextInt();
		System.out.println("请输入号数:(1-31)");
		int day = scan.nextInt();

		//方式一:缺点是冗余
		switch (month){
		case 1:
			System.out.println("2019年的第" + day + "天");
			break;
		case 2:
			System.out.println("2019年的第" + (31 + day) + "天");
			break;
		case 3:
			System.out.println("2019年的第" + (59 + day) + "天");
			break;
		case 4:
			System.out.println("2019年的第" + (90 + day) + "天");
			break;
		case 5:
			System.out.println("2019年的第" + (120 + day) + "天");
			break;
		case 6:
			System.out.println("2019年的第" + (151 + day) + "天");
			break;
		case 7:
			System.out.println("2019年的第" + (181 + day) + "天");
			break;
		case 8:
			System.out.println("2019年的第" + (212 + day) + "天");
			break;
		case 9:
			System.out.println("2019年的第" + (243 + day) + "天");
			break;
		case 10:
			System.out.println("2019年的第" + (273 + day) + "天");
			break;
		case 11:
			System.out.println("2019年的第" + (304 + day) + "天");
			break;
		case 12:
			System.out.println("2019年的第" + (334 + day) + "天");
			break;
		}

		//方法二:先定义一个总量来保存天数
		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:
			sumDays += 28;
		case 2:
			sumDays += 31;
		case 1:
			sumDays += day;
		System.out.println("今天是2019年的第" + sumDays + "天");
		
		}
	}
}

switch-case练习5

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

import java.util.Scanner;
class SwitchCaseExer5 {
	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);
		System.out.println("请输入年份:");
		int year = scan.nextInt();
		System.out.println("请输入月份:");
		int month = scan.nextInt();
		System.out.println("请输入号数:");
		int day = scan.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:
			//判断year是否是闰年
			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 + "天");
		
		}
	}
}

switch-case练习6

使用switch语句改写下列if语句:
        int a = 3;
        int x = 100;
        if(a==1)
            x+=5;
        else if(a==2)
            x+=10;
        else if(a==3)
            x+=16;
        else
            x+=34;
 

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

		int a = 3;
		int x = 100;
		switch (a)
		{
		case 1:
			x += 5;
			System.out.println(x);
			break;
		case 2:
			x += 10;
			System.out.println(x);
			break;
		case 3:
			x += 16;
			System.out.println(x);
			break;
		default:
			x += 34;
			System.out.println(x);
			break;
		}
		
	}
}

switch-case练习7

7、编写程序:从键盘上读入一个学生成绩,存放在变量score中,根据score的
值输出其对应的成绩等级:
        score>=90 等级: A
        70<=score<90 等级: B 
        60<=score<70 等级: C
        score<60 等级: D
    方式一:使用if-else
    方式二:使用switch-case: score / 10: 0 - 10

说明:
1、凡是可以使用switch-case的结构,都可以转换为if-else。反之,不成立。
2、我们写分支结构时,当发现既可以使用switch-case,(同时,switch中表达式的取值情况不太多。),又可以使用if-else时,我们优先选择使用switch-case。

import java.util.Scanner;
class SwitchCaseExer7 {
	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);
		System.out.println("请输入学生的成绩:(0-100)");
		int score = scan.nextInt();

		//方式一
		if (score >= 90){
			System.out.println("A");
		}else if (score < 90 && score >= 70){
			System.out.println("B");
		}else if (score < 70 && score >= 60){
			System.out.println("C");
		}else if (score < 60){
			System.out.println("D");
		}

		//方式二
		switch (score / 10){
		case 10:
		case 9:
			System.out.println("A");
			break;
		case 8:
		case 7:
			System.out.println("B");
			break;
		case 6:
			System.out.println("C");
			break;
		default:
			System.out.println("D");
			break;
		}

	}
}

switch-case练习8

8、编写一个程序,为一个给定的年份找出其对应的中国生肖。中国的生肖基于12年一个周期,每年用一个动物代表:rat、ox、tiger、rabbit、dragon、snake、horse、sheep、monkey、rooster、dog、pig。

提示:2019年:猪 2019 % 12 == 3

import java.util.Scanner;
class SwitchCaseExer8 {
	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);
		System.out.println("请输入年份:");
		int year = scan.nextInt();

		switch (year % 12){
		case 1:
			System.out.println("今年生肖是rooster(鸡)");
			break;
		case 2:
			System.out.println("今年生肖是dog(狗)");
			break;
		case 3:
			System.out.println("今年生肖是pig(猪)");
			break;
		case 4:
			System.out.println("今年生肖是rat(鼠)");
			break;
		case 5:
			System.out.println("今年生肖是ox(牛)");
			break;
		case 6:
			System.out.println("今年生肖是tiger(虎)");
			break;
		case 7:
			System.out.println("今年生肖是rabbit(兔)");
			break;
		case 8:
			System.out.println("今年生肖是dragon(龙)");
			break;
		case 9:
			System.out.println("今年生肖是snake(蛇)");
			break;
		case 10:
			System.out.println("今年生肖是horse(马)");
			break;
		case 11:
			System.out.println("今年生肖是sheep(羊)");
			break;
		case 12:
			System.out.println("今年生肖是monkey(猴)");
			break;
		
		}
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MoerPerfect

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

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

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

打赏作者

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

抵扣说明:

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

余额充值