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程序设计