如何减少“else if”语句?

-1 java if-statement

有没有办法减少“else if”语句?我的任务是制作一个程序,要求用户输入 3 个成绩,然后确定这些数字的平均值,并且还会根据他们给出的表格输出计算出的平均值的等效成绩。

到目前为止,这是我的代码。

if (ave >= 98){
    System.out.println("Your grade is 1!");
}
else if (ave >= 95){
    System.out.println ("Your grade is 1.25!");
}
else if (ave >= 92){
    System.out.println ("Your grade is 1.5!");
}   
else if (ave >= 89){
    System.out.println ("Your grade is 1.75!");
}
else if (ave >= 86){
    System.out.println ("Your grade is 2!");
}     
    
Run Code Online (Sandbox Code Playgroud)

Ale*_*nko 6

如果存在平滑函数( 中每相差 3 分ave,成绩加 0.25 分),则应根据最小 86 个和最大 98 个检查值计算成绩值:

\n
static double getGrade(int ave) {\n    final int min = 86;\n    double grade = 2.0;\n    \n    int p = (ave - min) / 3;\n    p = p < 0 ? 0 : (p > 4 ? 4 : p); // acceptable ranges\n    grade -= p * 0.25;\n    \n    System.out.println ("Your grade for ave = " + ave + " is " + grade + "!");\n    return grade;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

测试:

\n
getGrade(99);\ngetGrade(94);\ngetGrade(86);\n
Run Code Online (Sandbox Code Playgroud)\n

输出:

\n
Your grade for ave = 99 is 1.0!\nYour grade for ave = 94 is 1.5!\nYour grade for ave = 86 is 2.0!\n
Run Code Online (Sandbox Code Playgroud)\n
\n

对于评论中提供的更新公式:

\n
\n

1.0 = 98 \xe2\x80\x93 100%, 1.25 = 95 \xe2\x80\x93 97%, 1.5 = 92 \xe2\x80\x93 94%, 1.75 = 89 \xe2\x80\x93 91%, 2.0 = 86 \xe2\x80\x93 88 %, 2.25 = 83 \xe2\x80\x93 85 %, 2.5 = 80 \xe2\x80\x93 82 %, 2.75 = 77 \xe2\x80\x93 79 %, 3.0 = 75 \ xe2\x80\x93 76 %, 5.0 = 低于 75 % 平均值

\n
\n

需要修改代码以提供低于 75 和 75..77 之间的值:

\n
Your grade for ave = 99 is 1.0!\nYour grade for ave = 94 is 1.5!\nYour grade for ave = 86 is 2.0!\n
Run Code Online (Sandbox Code Playgroud)\n

测试:

\n
static double getGrade(int ave) {\n    double grade = 5.0;\n    if (ave >= 75) {\n        grade = 3.0;\n        final int stepAve = 3;\n        final int min = 77;\n        final int ranges = 7;\n        \n        int p = ave < min ? -1 : (ave - min) / stepAve;\n        p = p < 0 ? -1 : (p > ranges ? ranges : p); // acceptable ranges\n        grade -= (p + 1) * 0.25;\n    }\n    \n    System.out.println ("Your grade for ave = " + ave + " is " + grade + "!");\n    return grade;\n}    \n
Run Code Online (Sandbox Code Playgroud)\n

结果:

\n
Your grade for ave = 72 is 5.0!\nYour grade for ave = 75 is 3.0!\nYour grade for ave = 78 is 2.75!\nYour grade for ave = 81 is 2.5!\nYour grade for ave = 84 is 2.25!\nYour grade for ave = 87 is 2.0!\nYour grade for ave = 90 is 1.75!\nYour grade for ave = 93 is 1.5!\nYour grade for ave = 96 is 1.25!\nYour grade for ave = 99 is 1.0!\n
Run Code Online (Sandbox Code Playgroud)\n