Java switch分支语句
来自CloudWiki
目录
Switch语句
switch语句是什么
- switch语句可以将多选一的情况简化,而使程序简洁易懂。
语法格式
- switch语句往往需要在case标签后紧跟一个代码块,case标签作为这个代码块的标识。switch语句的语法格式如下:
switch (表达式) { case 选择值1 : 语句块主体1 break ; case 选择值2 : 语句块主体2 break ; …… case 选择值n : 语句块主体n break ; default: 语句块主体n+1 }
支持类型
- switch语句由一个控制表达式和多个case标签组成,和if语句不同的是,switch语句后面的控制表达式的数据类型只能是byte、short、char、int、枚举、String六种类型(其中枚举类型和String类型在Java 7才允许),不能是boolean类型。
Switch执行步骤
- switch语句先计算括号中表达式的结果。
- 根据表达式的值依次匹配case关键字后的选择值1、选择值2、…、选择值n等值,若是所有case的选择值皆不符合,则执行default关键字后的语句块主体,执行完毕即离开switch语句。
- 如果遇到某个case的选择值匹配表达式的结果,就会执行该case所对应的语句块主体,一直遇到break语句后才离开switch语句。
- 若是没有在case语句结尾处加上break语句,则会一直执行到switch语句的尾端才会离开switch语句。
常规用法
例 :向用户打印面馆的菜单,并根据用户输入的序号打印他(她)的选择。
package task4; import java.util.Scanner; public class RunNian { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner (System.in); System.out.println("客观,请问您需要什么面:"); System.out.print("1.刀削面\n2.蛋黄面\n3.玉米面\n4.牛筋面\n5.幸福小丸仔面\n"); //获取用户对于菜单的选择 String value = sc.next(); int choise = Integer.valueOf(value); switch(choise) { 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; default: System.out.println("对不起 ,必须在1~6范围内,请重新选择"); break; } System.out.println("欢迎光临"); } }
- 练习:使用switch模拟中国移动10086客户服务电话,如果用户输入1,打印“查询话费”,如果用户输入2,打印“话费充值”,如果用户输入3,打印“故障申报”,如果用户输入4,打印“人工服务”,输入其他:对不起,必选在1~4范围内选择。
多条件的归类合并
- 题目:利用switch的形式编程实现计算月份天数,用户输入年份和月份,如果是1月、3月、5月、7月等月,输出“该月有31天”,如果是4月、6月、9月等月,输出“该月有30天”,如果是2月,输出“该月有28(29)天”。。
Scanner sc =new Scanner(System.in); System.out.println("请输入年份:"); int year = sc.nextInt(); System.out.println("请输入月份:"); int month = sc.nextInt(); switch (month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: System.out.println("该月有31天"); break; case 2: if(year%4==0){ System.out.println("该月有29天"); }else{ System.out.println("该月有28天"); } break; default: System.out.println("该月有30天"); break; }
- 练习:疫情防控,根据国家名称判断他来自哪个高/中/低风险地区 哪个地区,并根据不同的风险级别打印不同的信息。
Java练习题
- 使用switch模拟中国移动10086客户服务电话,如果用户输入1,打印“查询话费”,如果用户输入2,打印“话费充值”,如果用户输入3,打印“故障申报”,如果用户输入4,打印“人工服务”;
- 打印你项目的所有功能:“1.商品下架;2.商品下架;查询商品",接受用户输入的序号,并运用switch语句,根据输入打印出用户的选择:“您选择的是功能1:。。。”
练习题答案
- BMI值:计1 苗璐瑶提供
import java.util.Scanner; public class mly { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner = new Scanner(System.in); //获取用户对于菜单的选择 String bmi = scanner.next(); int value = Integer.parseInt(bmi); if(value <18.5) { System.out.println("您的体重过轻"); }else if (value <23.9){//18.5<=value <23.9 System.out.println("您的体形完全正常"); }else if (value <27){//24<=value <27 System.out.println("您的体重有些超重"); }else{//value >=27 System.out.println("您的体重完全超重,请加强锻炼。"); } scanner.close(); } }
- 中国移动:计1 苗璐瑶提供
import java.util.Scanner; public class my { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc =new Scanner(System.in); String value =sc.next(); int choise =Integer.valueOf(value); switch(choise){ case 1: System.out.println("查询话费"); break; case 2: System.out.println("话费充值"); break; case 3: System.out.println("故障申报"); break; case 4: System.out.println("人工服务"); break; default: System.out.println("人工服务"); break; } sc.close(); } }
- 计算月份:计1 徐洁、苗璐瑶提供
import java.util.Scanner; public class Yuefen { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner = new Scanner(System.in); System.out.println("请输入年份:"); int year= scanner.nextInt(); System.out.println("请输入月份:"); int month= scanner.nextInt(); switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: System.out.println("31天"); break; case 2: if(year%4==0&& month==2) { System.out.println("29天"); }else { System.out.println("28天"); } break; default: System.out.println("30天"); break; } scanner.close(); } }
返回 Java程序设计