我如何使平均成绩参考我在If-Else Statement中创建的成绩

时间:2016-06-19 09:15:14

标签: java if-statement

public static boolean gradeCalculator() {
    double mark,student;
    String grade = "";
    double total = 0;

    System.out.println("Enter number of students :");
    student = scanner.nextDouble();

    for(int i=0; i<student; i++){

    System.out.println("Enter mark for student "+ (i+1) +" : ");
    mark = scanner.nextDouble();
    total = total + mark;
    double average = total/student;
    {
      if(mark >=0 && mark <=39){
        grade = "F" ; 

         }
      else if(mark >=40 && mark <=49){
        grade = "P";
         }
      else if(mark >=50 && mark <=59){
        grade = "D";
        }
      else if(mark >=60 && mark <=69){
        grade = "C";
         }
      else if(mark >=70 && mark <=79){
        grade = "B";
         }
      else if(mark >=80 && mark <100){             
        grade = "A";
        }  
      System.out.println( "Grade : " +grade);
    }
}
    System.out.println( "Average Mark : " +total/student);
    System.out.println( "Average Grade : " );
    System.exit(0);
    return false;
}

我想计算学生的成绩,以及脚本末尾的平均成绩。但我想知道我如何使平均标记参考我之前在if-else语句中创建的等级。

3 个答案:

答案 0 :(得分:0)

我建议将所有成绩保存在某个集合中。由于grade是在循环中设置的,因此您无法访问它具有的任何值,而是循环后的最后一个值。这些值被覆盖,因为下次执行循环时,同一个变量被设置为另一个值。

答案 1 :(得分:0)

我建议gradeenum

public enum Grade {A, B, C, D, E, F};
Grade grade;

一个优点是,这清楚地说明了可能的值是什么。另一个优点是每个枚举值都有一个与之关联的整数,允许您进行平均计算。

您可以从enum获取整数值,如下所示:

int gradeAsInt = grade.ordinal();

在循环中,通过在每次迭代中执行此操作来计算这些整数的总和:

sumOfGrades += grade.ordinal();

在循环之后将总和除以总数并将其转换回enum(正确舍入为0.5):

Grade averageGrade = Grade.values[(sumOfGrades + 0.5) / student];

当然,你应该先做范围检查。

答案 2 :(得分:0)

我认为那里有不同的问题,+ 首先,如果您需要添加新内容以添加新成绩或删除成绩,则需要修改不遵循开放/封闭原则的if-else。此外,每个if-else句子都会传播有关成绩的知识,并将其作为简单字符串("F""P""D",...)进行检索。想象一下,您需要稍后管理成绩,您需要再次使用其他if-else.equals("F").equals("P")。然后,假设您需要按"F"重命名成绩"X"。然后,你需要找到所有的&#34; F&#34;并写"X",当然你的IDE对这项任务非常有用,但这不是一个好习惯。

我认为等级是一个代表和陈述的常量列表,所以我认为你应该看看enumerates。这对您来说很有意思,因为它将允许以简单的方式表示和管理范围。

查看枚举java链接,其中开发了Planet示例。但是,对于您的情况来说可能过于复杂,所以请看一下answer。在那里,您会找到一个描述范围的枚举Wealth。所以,我认为这对你来说很有意思。