2015-01-15 96 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 
    } 
    }