首页 > 解决方案 > 如何在方法中使用 switch 语句,以便该方法可以返回一个 char 值,该值由其中的 switch 语句获取?

问题描述

该方法假设计算获得的分数的平均值并相应地返回分数。我如何将成绩从 switch() 传递到 calculate() 以便它可以返回正确的成绩?

public char calculate(){

    int count=0;
    int total = 0;
     for (int x: testScores){
             total = total + x;
             count++;
     }  

     int grade = total/count;

        switch(grade){
                case (1): if (grade>=90) return 'O';
                break;
                case(2): if (grade>=80 && grade<90) return 'E';
                break;
                case (3): if (grade>=70 && grade<80) return 'A';
                break;
                case (4): if (grade>=55 && grade<70) return 'P';
                break;
                case (5): if (grade>=40 && grade<55) return 'D';
                break;
                case (6): if (grade<40) return 'E';
                break;
            }
            return //what should i return here??

    }

我知道如何在没有 switch() 的情况下做到这一点,但我认为也可以这样做。请告诉我我错过了什么?

标签: javamethodsswitch-statementreturn

解决方案


在您的开关中,您跳转到不同的部分,检查是否grade为 1、2、3 等。但是然后您将其与 0 到 100 范围内的值进行比较?那是永远无法解决的。

但是你根本不需要switch,你可以使用一系列if语句

public char calculate(){

  int count=0;
  int total = 0;
  for (int x: testScores){
    total = total + x;
    count++;
  }  

  int grade = total/count; //what if count is 0?

  if (grade>=90) return 'O';
  if (grade>=80) return 'E';
  if (grade>=70) return 'A';
  if (grade>=55) return 'P';
  if (grade>=40) return 'D';
  return 'E';
}

并且确保覆盖了when countis 0的情况,我这里没有做过,因为我不知道那应该是什么结果。


推荐阅读