2011-07-12 90 views
0
public char[] calculateGrade(int [] scores, char [] grades){ 
    for (int r = 0; r < scores.length; r++){ 
     //System.out.println(scores[r] + " "); 
     if (scores[r] > 90) 
      grades[r] = 'A'; 
     else if (scores[r] > 80) 
      grades[r] = 'B'; 
     else if (scores[r] > 70) 
      grades[r] = 'C'; 
     else if (scores[r] > 60) 
      grades[r] = 'D'; 
     else 
      grades[r] = 'F'; 
    for (int i = 0; i < grades.length; i++) 
     System.out.println(grades[i]); 

    } 
    return grades; 

} 

上面是我整體程序的一小部分,它從文件中獲取分數並將它們轉換爲字母等級。我需要將這些字母等級放入該文件中。字母等級需要與分數對應。一次有一行26個不同的分數。我會把我的整個代碼放在這裏,但它確實很長。請幫助傢伙!使用Java數組的幫助:保存到輸出文件

+1

最後一個for循環只打印所有的成績多次。我真的很困惑... – Josh

+0

順便說一句,我意識到沒有人提到你的代碼的問題。你的循環是嵌套的。所以每次你讀一個分數,你打印所有的成績。小心託槽。 – besamelsosu

回答

3

我建議讓每種方法做一件事,並做好。不要計算成績並打印出來。

public void printGrades(PrintStream ps, char [] grades) { 
    for (char grade : grades) { 
     ps.println(grade); 
    } 
} 

public char[] calculateGrade(int [] scores){ 

    char [] grades = new char[scores.length]; 

    for (int r = 0; r < scores.length; r++){ 
     if (scores[r] > 90) 
      grades[r] = 'A'; 
     else if (scores[r] > 80) 
      grades[r] = 'B'; 
     else if (scores[r] > 70) 
      grades[r] = 'C'; 
     else if (scores[r] > 60) 
      grades[r] = 'D'; 
     else 
      grades[r] = 'F'; 
    } 
    return grades; 

} 
+0

我想,他只從文件中讀取分數。因此,作爲calculateGrade()的參數的「char []成績」也是錯誤的方法。 –

+0

我不明白,你顯然正在創建方法中的等級數組並將它返回給類,但是班級如何理解它。不是一個局部變量? – Josh

+0

在意識到剪切和粘貼解決方案不是首選之後,我從參數列表中取出了「char []成績」。 – duffymo

1

改變你的方法只是以下幾點:

public void calculateGrade(int[] scores, char[] grades){ 
    for (int r = 0; r < scores.length; r++) { 
     if (scores[r] > 90) 
      grades[r] = 'A'; 
     else if (scores[r] > 80) 
      grades[r] = 'B'; 
     else if (scores[r] > 70) 
      grades[r] = 'C'; 
     else if (scores[r] > 60) 
      grades[r] = 'D'; 
     else 
      grades[r] = 'F'; 
    } 
} 

沒有必要返回grades因爲數組通過引用傳遞反正。然後在你的撥號方法(main?)中,你應該寫grades到你想要的文件。

要寫入一個文件,請諮詢:http://www.exampledepot.com/egs/java.io/WriteToFile.html

因此,像:

try { 
    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("filename"))); 

    for(char grade : grades) 
     out.println(grade); 

    out.close(); 
} catch (IOException e) { } 
+0

謝謝你,但最後一部分有點太複雜了。我是一名初級CS學生,至今我還沒有學過這些關鍵詞。所以我需要保持簡單哈哈。但我瞭解第一部分! – Josh

+0

這就是你寫入文件的方式。不要擔心'try'或'catch'。除了寫入文件之外,只要將'out.println'看作與'System.out.println'類似。 – tskuzzy