我的代码哪里出错了



编辑:

我想我复制了稍微错误的代码!

public class GradeCalculator {
 public static void calculateGrade(int mark) {
  if (mark >= 70) System.out.println("grade = A");
  if (mark >= 60) System.out.println("grade = B");
  if (mark >= 50) System.out.println("grade = C");
  if (mark >= 40) System.out.println("grade = D");
  if (mark <  40) System.out.println("grade = F");
 }
 public static void main(String[] args) {
 }
}

我才刚刚开始尝试Java(或任何编程。我正在通过练习题来工作。我有这段代码,需要在 main 方法中编写语句来测试它。

我该怎么做?

感谢您的任何帮助/指向正确方向的指示。

马克

您需要

main调用该方法。我强烈建议您完成非常基本的Java教程,您缺少一个非常基本的概念。

一旦你这样做了,你需要有else。在您的情况下,如果满足第一个if,则以下if将满足。

想一想,if (mark >= 70)肯定if (mark >= x)任何x <= 70.

好吧,为了开始这场闹剧,让我们将您的代码编辑成以合理的方式编译和工作的东西:

public class GradeCalculator {
    public static void claculateGrade (int mark) {
        if (mark >= 70) System.out.println("grade = A");
        else if (mark >= 60) System.out.println("grade = B");
        else if (mark >= 50) System.out.println("grade = C");
        else if (mark >= 50) System.out.println("grade = D");
        else if (mark >= 40) System.out.println("grade = E");    
    }
    public static void main (String[] args)  {
    }
}

现在,要打印某人会得到一些分数的成绩,您可以像这样调用"claculateGrade"方法:

public static void main (String[] args)  {
    claculateGrade(55);
}

这应该将"grade = C"打印到控制台。完整代码:

public class GradeCalculator {
    public static void claculateGrade (int mark) {
        if (mark >= 70) System.out.println("grade = A");
        else if (mark >= 60) System.out.println("grade = B");
        else if (mark >= 50) System.out.println("grade = C");
        else if (mark >= 50) System.out.println("grade = D");
        else if (mark >= 40) System.out.println("grade = E");    
    }
    public static void main (String[] args)  {
        claculateGrade(55);
    }
}

现在,人们可以进一步改善这一点。让我们从让方法返回等级开始:

public static char getGrade (int mark) {
    if (mark >= 70) return 'A';
    else if (mark >= 60) return 'B';
    else if (mark >= 50) return 'C';
    else if (mark >= 50) return 'D';
    else if (mark >= 40) return 'E';
    /* if below 40, return "fail" */
    return 'F';
}

这会将您的代码更改为:

public class GradeCalculator {
    public static char getGrade (int mark) {
        if (mark >= 70) return 'A';
        else if (mark >= 60) return 'B';
        else if (mark >= 50) return 'C';
        else if (mark >= 50) return 'D';
        else if (mark >= 40) return 'E';
        /* if below 40, return "fail" */
        return 'F';
    }
    public static void main (String[] args)  {
        System.out.println("Grade: " + getGrade(55));
    }
}

为了使您的代码正常工作,您需要调用您的方法,因为您的所有编码都是在该部分中完成的,即根据条件进行打印。

public class GradeCalculator { // This is your class
     public static void calculateGrade(int mark) { 
  //This is the method containing conditions
    on the basis of these conditions the corroesponding
   sentences will be  printed
      if (mark >= 70) System.out.println("grade = A");
      if (mark >= 60) System.out.println("grade = B");
      if (mark >= 50) System.out.println("grade = C");
      if (mark >= 40) System.out.println("grade = D");
      if (mark <  40) System.out.println("grade = F");
     }
    //now u need to call the method from your main method.. main method is the entry point of your program so it will start from main then check your method call and do as per the code written there
     public static void main(String[] args) {
    // to call your method just right your method name and enter marks
    calculateGrade(50); // you can enter any integer 
     }
    }

你计算成绩应该返回成绩,而不是打印它。 如果要打印,呼叫者可以打印成绩,例如

public static char calculateGrade(int mark) {
    return "UUUUEDCBAAAA".charAt(mark/10);
}
System.out.println("Grade = " + calculateGrade(65));

代码的工作方式是它利用了每个区域是 10 的倍数的事实,即当你除以 10 时,你会得到

100 -> 10
90 - 99 -> 9
80 - 89 -> 8
70 - 79 -> 7
60 - 69 -> 6
50 - 59 -> 5
40 - 49 -> 4
30 - 39 -> 3
20 - 29 -> 2
10 - 19 -> 1
0 - 9 -> 0

所以现在所有的数字都变成了 0 到 10 的区域。 但是,我们希望成绩是一个字母,所以你得到

100 -> A
90 - 99 -> A
80 - 89 -> A
70 - 79 -> A
60 - 69 -> B
50 - 59 -> C
40 - 49 -> D
30 - 39 -> E
20 - 29 -> U
10 - 19 -> U
0 - 9 -> U

相关内容

  • 没有找到相关文章

最新更新