Java——成绩等级评定

本文介绍了Java中评定百分制成绩等级的四种方法:并列式、嵌套式、延拓式和开关式多分支结构,重点讲解了每种方法的思路、优缺点以及实例代码。延拓式结构因其效率高被推荐学习掌握。

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

对百分制成绩评定等级

(100, +):超出范围
[90, 100]:优秀
[80, 90):良好
[70, 80):中等
[60, 70):及格
[0, 60):不及格
(-, 0):超出范围

(一)编程实现

方法一、采用并列式多分支结构评定成绩等级

思路:有多少种情况,就并列写多少个单分支,分支之间相互独立

在这里插入图片描述
第1个分数段: s c o r e > 100 , s c o r e ∈ ( 100 , + ∞ ) score>100,score\in(100,+\infty) score>100,score(100,+) -超出范围

  • 第2个分数段: 90 ≤ s c o r e ≤ 100 , s c o r e ∈ [ 90 , 100 ] 90\le score \le 100,score\in[90,100] 90score100,score[90,100] -优秀

  • 第3个分数段: 80 ≤ s c o r e < 90 , s c o r e ∈ [ 80 , 90 ) 80\le score\lt 90,score\in[80,90) 80score<90,score[80,90) -良好

  • 第4个分数段: 70 ≤ s c o r e < 80 , s c o r e ∈ [ 70 , 80 ) 70\le score\lt 80,score\in[70,80) 70score<80,score[70,80) -中等

  • 第5个分数段: 60 ≤ s c o r e < 70 , s c o r e ∈ [ 60 , 70 ) 60\le score\lt 70,score\in[60,70) 60score<70,score[60,70) -及格

  • 第6个分数段: 0 ≤ s c o r e < 60 , s c o r e ∈ [ 0 , 60 ) 0\le score\lt 60,score\in[0,60) 0score<60,score[0,60) -不及格

  • 第7个分数段: s c o r e < 0 , s c o r e ∈ [ − ∞ , 0 ) score\lt 0,score\in[-\infty,0) score<0,score[,0) - 超出范围

  • 在net.yangxinying.p02.t03创建Task03_1

在这里插入图片描述
在这里插入图片描述

package net.yangxinying.p02.t03;

import java.util.Scanner;

/**
 * 功能:采用并列式多分支结构评定成绩等级
 * 作者:杨鑫莹
 * 日期:2022年03月31日
 */
public class Task03_1 {
    public static void main(String[] args) {
        //声明部分
        int score;
        String level;
        Scanner sc = new Scanner(System.in);

        //输入部分
        System.out.print("score = ");
        score = sc.nextInt();

        //处理部分
        level = "";
        if (score > 100) level = "超出范围";
        if (score >= 90 && score <= 100) level = "优秀";
        if (score >= 80 && score <= 90) level = "良好";
        if (score >= 70 && score <= 80) level = "中等" ;
        if (score >= 60 && score <= 70) level = "及格";
        if (score >= 0 && score <= 60) level = "不及格";
        if (score < 100) level = "超出范围";

        //输出部分
        System.out.println(level);
    }
}
  • 要注意level:局部变量必须初始化,否则会报错

  • 怎么解决这个问题呢?很简单,在处理部分之前将level初始化为空字符串(Alt + shift + enter)

  • 运行结果在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 总结:并列式多分支结构,优点是易于理解,但缺点是效率低(思考一下,为什么效率低)。

  • 其实,这个程序可以作点优化,因为成绩大于100分或小于0分都是超出范围,所以可以将这两个并列的分之合而为一
    在这里插入图片描述

方法二、采用嵌套式多分支结构评定成绩等级

思路1、从高分到低分来划分各个分数段

在这里插入图片描述

  • 在net.yangxinying.p02.t03包里创建Task03_2类
    在这里插入图片描述
package net.yangxinying.p02.t03;

import java.util.Scanner;

/**
* 功能:成绩等级评定
* 作者:杨鑫莹
* 日期:2022年03月31日
*/
public class Task03_2 {
   public static void main(String[] args) {
       // 声明部分
       int score;
       String level;
       Scanner sc = new Scanner(System.in);

       // 输入部分
       System.out.print("score = ");
       score = sc.nextInt();

       // 处理部分
       level = "";
       if (score > 100) {
           level = "超出范围";
       } else {
           if (score >= 90) {
               level = "优秀";
           } else {
               if (score >= 80) {
                   level = "良好";
               } else {
                   if (score >= 70) {
                       level = "中等";
                   } else {
                       if (score >= 60) {
                           level = "及格";
                       } else {
                           if (score >= 0) {
                               level = "不及格";
                           } else {
                               level = "超出范围";
                           }
                       }
                   }
               }
           }
       }

       // 输出部分
       System.out.println(level);
   }
}
  • 运行程序,查看结果(测试七种情况
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

思路2、从低分到高分来划分各个分数段

在这里插入图片描述

  • 在net.yangxinying.p02.t03包里创建Task03_2_类

在这里插入图片描述

  • 总结:嵌套式多分支结构,优点是层次分明、效率高,但缺点是嵌套层次太多时显得很繁

方法三、采用延拓式多分支结构评定成绩等级

思路1:从高分到低分来划分各个分数段

在这里插入图片描述

  • 在net.yangxinying.p02.t03包里创建Task03_3类
    在这里插入图片描述
package net.yangxinying.p02.t03;

import java.util.Scanner;

/**
 * 功能:采用延拓式多分支结构评定成绩等级
 * 作者:杨鑫莹
 * 日期:2022年04月07日
 */
public class Task03_3 {
    public static void main(String[] args) {
        //声明部分
        int score;
        String level;
        Scanner sc = new Scanner(System.in);

        //输入部分
        System.out.print("score = ");
        score = sc.nextInt();

        //处理部分
        level = "";
        if (score > 100) {
            level = "超出范围";
        } else if (score >= 90) {
            level = "优秀";
        } else if (score >= 80) {
            level = "良好";
        } else if (score >= 70) {
            level = "中等";
        } else if (score >= 60) {
            level = "及格";
        } else if (score >= 0) {
            level = "不及格";
        } else {
            level = "超出范围";
        }

        //输出部分
        System.out.println(level);
    }
}

思路2、从低分到高分来划分各个分数段
在这里插入图片描述

  • 在net.yangxinying.p02.t03包里创建Task03_3_类
    在这里插入图片描述
package net.yangxinying.p02.t03;

import java.util.Scanner;

/**
 * 功能:采用延拓式多分支结构评定成绩等级
 * 作者:杨鑫莹
 * 日期:2022年04月07日
 */
public class Task03_3_ {
    public static void main(String[] args) {
        // 声明部分
        int score;
        String level;
        Scanner sc = new Scanner(System.in);

        // 输入部分
        System.out.print("score = ");
        score = sc.nextInt();

        // 处理部分
        level = "";
        if (score < 0) {
            level = "超出范围";
        } else if (score < 60) {
            level = "不及格";
        } else if (score < 70) {
            level = "及格";
        } else if (score < 80) {
            level = "中等";
        } else if (score < 90) {
            level = "良好";
        } else if (score <= 100) {
            level = "优秀";
        } else {
            level = "超出范围";
        }

        // 输出部分
        System.out.println(level);
    }
}

总结:延拓式多分支结构,优点是只有一层,并且效率高。希望同学们务必掌握这一种多分支处理方式。

方法四、采用开关式多分支结构评定成绩等级

  • 关键点在于将成绩变量整除10,以便将各个分数段转换成离散的整数值,这样才能用开关式多分支结构来进行处理。
  • 在net.huawei.p02.t03包里创建Task03_4类
    在这里插入图片描述
 package net.yangxinying.p02.t03;

import java.util.Scanner;

/**
 * 功能:
 * 作者:杨鑫莹
 * 日期:2022年04月07日
 */
public class Task03_4 {
    public static void main(String[] args) {
        //声明部分
        int score;
        String level;
        Scanner sc = new Scanner(System.in);

        //输入部分
        System.out.print("score = ");
        score = sc.nextInt();

        //处理部分
        level = "";
        if (score < 0 || score > 100) {
            level = "超出范围";
        }else {
            switch (score / 10) {
                case 10:
                case 9:
                    level = "优秀";
                    break;
                case 8:
                    level = "良好";
                    break;
                case 7:
                    level = "中等";
                    break;
                case 6:
                    level = "及格";
                    break;
                default:
                    level = "不及格";
            }
        }

        //输出部分
        System.out.println(level);
    }
}
  • 总结:开关式多分支结构,优点是书写简洁,并且效率高,但缺点是只能针对离散型的情况进行处理。开关式多分支结构里的测试表达式,类型可以是整数、字符、甚至可以是字符串。

(二)讲解知识点

详细讲稿: Java学习笔记2.4.3 选择结构 - 多分支结构
多分支结构可有四种处理方式:并列式、嵌套式、延拓式、开关式

1、并列式多分支结构

if (条件1) {
    语句组1
}
if (条件2) {
    语句组2
}
……
if (条件n) {
    语句组n
}

2、嵌套式多分支结构

if (条件) {
    if (条件1) {
       语句组1
    } else {
       ……
    }
} else {
    if (条件2) {
       语句组2
    } else {
       ……
    }
}

3、延拓式多分支结构

if (条件1) {
    语句组1
} else if (条件2) {
    语句组2
} 
……
} else if (条件n) {
    语句组n
} else {
    语句组n+1
}

4、开关式多分支结构

switch (测试表达式) {
    case1:
        语句组1
        break;
    case2:
        语句组2
        break;
     ……
    case 值n:
        语句组n
        break;
    default:
        语句组n+1
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值