.java中switch case用法

本文详细介绍了switch语句在比较数字或字符时的优势,并通过范例展示了如何将其应用于成绩等级的比较,进而提升代码效率。与if判断式相比,switch在取出变量值后仅需进行一次比较,从而在处理多个条件时更显高效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

switch只能比较数值或字符,不过别以为这样它就没有if有用,使用适当的话,它可比if判断式有效率。switch的语法结构如下:

switch(变量名称或表达式) { 
    case 符合数字或字符: 
        语句一; 
        break; 
    case 符合数字或字符: 
        语句二; 
        break; 
    default: 
        语句三; 
 } 

首先看看switch的括号,当中放置您要取出数值的变量。取出数值之后,程序会开始与case中所设定的数字或字符做比较,如果符合就执行其中的语句,直到遇到break后离开switch程序块;如果没有符合的数值或字符,则会执行default后的语句,default不一定需要;如果没有默认要处理的动作,可以省去这个部分。

下面来看看范例3.26的成绩等级比较如何使用switch来改写。

? 范例3.27  ScoreLevel2.java

import java.util.Scanner;

 

public class ScoreLevel2 {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

 

        System.out.print("请输入分数: ");

        int score = scanner.nextInt();

        int level = (int) score/10;

 

        switch(level) {

            case 10:

            case 9:

                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("E(不及格)");

        }

    }

}

在这个程序中,使用除法并取得运算后的商数,如果大于90,除以10的商数一定是910(100分时)。在case 10中没有任何的语句,也没有使用break,所以会继续往下执行,直到遇到break离开switch为止,所以若学生成绩为100分,也会显示A的成绩等级;如果比较的条件不是106这些值,会执行default下的语句,这表示商数小于6,所以学生的成绩等级就显示为E了。

注意在case后的等号是冒号而不是分号,这是一个经常输错的符号。如果比较的是字符,则记得加上单引号(' ')。例如:

case 'A':

这个程序与使用if来判断成绩等级的程序有何不同?如果纯粹比较数字或字符,建议使用switch,因为它只会在一开始的 switch括号中取出变量值一次,然后将这个值与下面所设定的case比较,但如果使用if,每次遇到条件式时,都要取出变量值,效率的差异就在这儿。例如:

if(a == 1) 
    // ... 
else if(a == 2) 
    // ... 
else if(a == 3) 
    // ... 

这个程序片段在最差的状况下,也就是a = 3时,共需3次比较,而每次比较都必须取出变量a的值一次。如果换成switch

switch(a) { 
    case 1: 
        // ...
        break; 
    case 2: 
        // ... 
        break; 
    case 3: 
        // ... 
        break; 
} 

在这个程序片段中,只在开头switch的括号中取出变量a的值,然后逐一比较下面的case,效率的差别就在这儿。当然并不是使用if就不好,遇到复合条件时,switch就帮不上忙了,由于无法在switch中组合复杂的条件语句,这时就得使用if了。简单地说,ifswitch两者可以搭配着灵活使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值