关于Java中if-else的优化问题

发布于 2022-09-11 17:35:15 字数 1343 浏览 17 评论 0

问题描述

这是一个比较简单的题目,都会写,我想问的是,这些if-else能否优化

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    System.out.println("Enter the number of students:");
    int n = input.nextInt();
    int[] score = new int[n];
    System.out.println("Enter scores:");

    int max = 0;
    for (int i = 0; i < n; i++) {
        score[i] = input.nextInt();
        if (score[i] > max) {
            max = score[i];
        }
    }

    for (int i = 0; i < n; i++) {
        if (score[i] >= max - 10)
            System.out.println("Student " + i + " score is " + score[i] + " and grade is A");
        else if (score[i] >= max - 20 && score[i] < max - 10)
            System.out.println("Student " + i + " score is " + score[i] + " and grade is B");
        else if (score[i] >= max - 30 && score[i] < max - 20)
            System.out.println("Student " + i + " score is " + score[i] + " and grade is C");
        else if (score[i] >= max - 40 && score[i] < max - 30)
            System.out.println("Student " + i + " score is " + score[i] + " and grade is D");
        else
            System.out.println("Student " + i + " score is " + score[i] + " and grade is F");
    }


}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

大姐,你呐 2022-09-18 17:35:15

可参考下面的代码

      int max = 100;
        int n=5;
        int [] score={59,84,12,90,100};
        
        int[] zone = {10, 20, 30, 40};
        String[] grades={"A", "B", "C","D","F"};
        String format= "Student %s score is %s and grade is %s";
       
       
        for (int i = 0; i < n; i++) {
            String grade=grades[zone.length];
            for(int j=0; j<zone.length; j++){
                if(score[i]>= max - zone[j]){
                    grade = grades[j];
                    break;
                }   
            }
            System.out.println(String.format(format, i, score[i], grade));
            
        }

基本思路是数据与逻辑分离,消除重复部分, 便于扩展和维护, 但可读性有所下降. 可以通过封装成方法, 提高可读性.

对于区间很多, 对应关系复杂时, 可以使用 Guava 的 RangeMap 类处理, 会更方便.

参考:

https://stackoverflow.com/que...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文