Java控制语句之switch语句

关于switch语句:
1.switch语句也属于选择结构,也是分支语句
2.switch语句的语法结构:
一个比较完整的switch语句应该也是这样编写:
switch(int或String类型的字面值变量){
case int或String类型的字面值变量 :
java语句;

//break; //如若没有break的话,最上面的那个不会跟这个进行匹配
case int或String类型的字面值变量 :
java语句;
java语句;
java语句;
java语句;
…//
break;
case int或String类型的字面值变量 :
java语句;
java语句;
java语句;
java语句;

break;

default :
java语句

				 }

3.switch语句的执行原理:
switch后面的小括号当中的”数据“和case后面的”数据“进行一一匹配,匹配成功的分支执行。按照自上而下的顺序依次匹配。
4.匹配成功的分支执行,分支当中最后有”break“;语句的话,整个switch语句终止
5.匹配成功的分支执行,分支当中没有”break“;语句的话,直接进行下一个分支执行(不进行匹配)。这种现象被称为case穿透现象。【提供break;语句可以避免穿透】
6.所有分支都没有匹配成功,当有default的语句的话,会执行default分支当中的程序。
7.switch后面和case后面只能是int类型或者String类型的数据,不能是深测其他的类型’
*当然byte,short,char也可以直接写到switch和case后面,因为他们可以进行自动类型转换。
byte,short,char也可以自动转换成int类型。
*JDK6的,switch和case后面只能深测int类型。
*JDK7及之后的版本,引入新特性,switch关键字和case关键字后面可以深测int或String类型的数据。
8.case可以合并:
int i = 10;
switch(i){
case 1:
case 2:
case 3:
case 10:
System.out.println(“Test Code!”);
}

接下来是一些实操:

package com.itemma;
/*
实现思路:
        1.选择所有数据从键盘输入
        2.使用switch语句进行判断
        3.需要从控制台输出三次:
        *第一个数字
        *运算符
        *第二个数字

        最终在控制台上是这样的一个场景:
        欢迎使用简单计算器系统
        请输入第一个数字:10
        请输入运算符:+  -  * / %
        运算结果:10 + 20 = 30
*/

import java.util.Scanner;
public class Complex02 {
    public static void main(String[] args) {
        System.out.println("请按顺序输入第一个数字,运算符号和第二个运算符号");
        java.util.Scanner sc = new java.util.Scanner(System.in);
        int a = sc.nextInt();
        String c = sc.next();
        int b = sc.nextInt();
        switch(c){
            case "+":
                System.out.println("a" + "+" + "b" + "=" + (a  + b));
                break;
            case "-":
                System.out.println("a" + "-" + "b" + "=" + (a - b));
                break;
            case "*":
                System.out.println("a" + "*" +  "b" + "=" + (a  * b));
                break;
            case "/":
                System.out.println("a" + "/" + "b" + "=" + (a  / b));
                break;
            default:
                System.out.println("你是不是输入有错了");
        }
    }

        }



package com.itemma;
/*
假设系统给定学生成绩,请判断该考生的成绩等级:
     1.有效成绩范围【0-100】
	 2.考试成绩可能带有小数点
	 3.考试成绩和等级之间的对照关系;
	      【90-100】A
		  [80-90]B
		  [70-80]C
		  [60+70]D
		  [0-60]E
		  4.以上需求必须采用switch语句完成,不能采用if。

		  窍门: (int)(成绩/ 10)
		      0
			  1
			  2
			  3
			  4
			  5
			  6
			  7
			  8
			  9
			  10
*/

import java.util.Scanner;
public class Complex02 {
    public static void main(String[] args) {
        System.out.println("该系统可以根据学生成绩,请判断该考生的成绩等级,请输入你的带有小数点0-100 的成绩:");
        java.util.Scanner sc = new java.util.Scanner(System.in);
        double grade = sc.nextDouble();
        int score = (int)(grade / 10);
        switch(score){
            case 9:
            case 10:
                System.out.println("该考生的成绩等级为A,太棒了吧!");
                break;
            case 8:
                System.out.println("该考生的成绩等级为B");
                break;
            case 7:
                System.out.println("该考生的成绩等级为C");
                break;
            case 6:
                System.out.println("该考生的成绩等级为D");
                break;
            default:
                System.out.println("该考生的成绩等级为F,成绩不太好哦,不及格!");

        }

    }

        }


C:\Software\Java\jdk-17\bin\java.exe "-javaagent:E:\IntelliJ IDEA Community Edition 2021.3\lib\idea_rt.jar=63326:E:\IntelliJ IDEA Community Edition 2021.3\bin" -Dfile.encoding=UTF-8 -classpath "E:\IntelliJ IDEA Community Edition 2021.3\IDEA Studying\out\production\IDEA Studying" com.itemma.Complex02
该系统可以根据学生成绩,请判断该考生的成绩等级,请输入你的带有小数点0-100 的成绩:
99.5
该考生的成绩等级为A,太棒了吧!

Process finished with exit code 0

```java
package com.itemma;
//举一个例子:判断1-12月份有多少天


import java.util.Scanner;
public class Complex02 {
        public static void main(String[] args) {
            char x = 'A';
            switch(x){
                case 'A':
                    System.out.println("高级");
                    break;
                case 'B':
                    System.out.println("中级");
                    break;
                case 'C':
                case 'D':
                    System.out.println("低级");
                default:
                    System.out.println("你是不是输错了");
            }

        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值