2015-01-15 76 views
-2

编辑:我的代码在哪里出错?

我想我复制了一些错误的代码!

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(或任何编程。我通过实践问题工作我的方式,我有这样的代码,并需要写语句来测试它的主要方法。

我怎么能这样做?

感谢在正确的方向任何帮助/指针。

马克

+0

您的代码不会编译,交配。 –

+0

如果你的代码有bug,你应该做的第一件事就是使用你的调试器来确定你的程序为什么要做它的功能。我也建议你在IDE中使用重新格式化器。顺便说一句你可以将上面的代码转换为1班轮。 –

回答

1

您需要从调用方法。我强烈建议你通过very basic Java tutorial,你错过了一个非常基本的概念。

一旦你这样做了,你需要有else。在你的情况下,如果第一个if得到满足,下面的if将会是。

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

1

嗯,首先这场闹剧,让我们编辑你的代码的东西,编译,并在无意义的工作方式:

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)); 
    } 

} 
+0

所以问题是其他如果 (一旦我发布了代码,我的意思是在我原来的问题!) 感谢您的答复。 –

0

你计算等级应返回档次,不打印。如果你想打印它,呼叫者可以打印等级例如

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 
+0

很难看到代码在做什么 –

+0

@OlaviMustanoja我已经更新了我的答案。那个除以10的东西是不是很清楚,或者查找字符串中的一个字母不清楚? –

+1

对不起,我的评论有点含糊。我的意思是,对于一个显而易见的初学者来说,这段代码可能有点压倒性。现在你已经解释过了,这很好。 –

0

为了让你需要打电话给你的方法,你所有的编码在该部分即完成打印的基础上,你的代码工作Ø f条件。

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 
    } 
    }