前言:阅读时请把本文与上一篇文章的if else的结构对比判断闰年——Javahttps://blog.youkuaiyun.com/Pniubi/article/details/145968036?spm=1001.2014.3001.5501
编写Java程序:通过使用switch语句,实现从键盘录入一个百分制成绩,输出一个五级制的成绩的需求。
思路:
1.划分等级,例如此处分ABCD五个等级(假设总分100分,每20分一个等级)
2.scanner录入
3.使用switch识别其对应的等级
4.输出
难点:switch语句(此处简单提及,后期详细详解)
1.基本语法结构
switch(表达式)
{
case 值1:
// 代码块1
break;
case 值2:
// 代码块2
break;
default:
// 默认代码块
}
2.case应该是按顺序吗
无强制顺序要求(eg case1...case2... ...)
语法规范不限制case
值的排列顺序
执行时仅进行值匹配,与case
书写顺序无关
3.default的作用
在Java的switch
语句中,default
是最终的兜底处理分支,其作用类似于if-else
结构中的else
。
4.case匹配逻辑解析
进行值匹配:例如下面代码中 grade等于几就是case几
int grade = (score+1)/20 ;
switch (grade)
{
case 1:
System.out.println("E");
break;
case 2:
System.out.println("D");
break;
case 3:
System.out.println("C");
break;
case 4:
System.out.println("B");
break;
default:
System.out.println("A");
}
总结
完整代码:
package Project01;
import java.util.Scanner;
public class 成绩分级 {
public static void main(String[] args) {
System.out.println("请输入成绩: ");
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
int grade = (score+1)/20 ;
switch (grade)
{
case 1:
System.out.println("E");
break;
case 2:
System.out.println("D");
break;
case 3:
System.out.println("C");
break;
case 4:
System.out.println("B");
break;
default:
System.out.println("A");
}
}
}
输出效果:
补充
与if-else对比
特性 | switch | if-else |
---|---|---|
适用场景 | 等值判断(离散值) | 范围判断、复杂条件 |
可读性 | 多分支时更清晰 | 分支多时嵌套难读 |
执行效率 | 通过跳转表实现(O(1)) | 顺序判断(O(n)) |
类型限制 | 有限数据类型 | 支持所有条件表达式 |
package Project01;
import java.util.Scanner;
public class 成绩分级
{
public static void main(String[] args)
{
System.out.println("请输入成绩: ");
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
if (score > 100 || score < 0)
{
System.out.println("无效成绩");
}
else if (score >= 80)
{
System.out.println("A");
}
else if (score >= 60)
{
System.out.println("B");
}
else if (score >= 40)
{
System.out.println("C");
}
else if (score >= 20)
{
System.out.println("D");
}
else
{
System.out.println("E");
}
}
}