2014-01-09 36 views
-1

我對如何使用數組和方法有疑問。在我的情況下,我試圖編寫一種方法,在給定特定字母時計算並顯示平均值,但這些字母在數組中。當我打電話給我的方法時,它說incompatible types: String[] cannot be converted to String。我怎樣才能解決這個問題?任何幫助將不勝感激。以下是我的代碼:使用數組和方法

public class Tester{ 
public double letterAverage(String letterGrade){ 
    double letterAverage = 0; 
    if(letterGrade == "a"){ 
     System.out.println(99/4); 
    }else if(letterGrade == "b"){ 
     System.out.println(88/2); 
    }else{ 
     System.out.println(77/3); 
    } 
    return letterAverage; 
} 
public static void main(String args[]){ 
    String[] letters = {"a", "b", "c"}; 
    letterAverage(letters); // error 
} 
} 
+1

1.不要使用數組,使用集合(在這種情況下的ArrayList) 2.公共雙letterAverage(字符串[] letterGrade),如果你想傳遞一個數組,但那麼身體是錯誤的 3.先寫一個算法,然後用你選擇的語言實現它 - 你在這裏缺少算法 4.是的,謝謝@rgettman,使用'equals()' –

+0

首先,使用'String'是'equals'方法來比較字符串值,而不是'=='運算符。其次,你需要傳遞一個字符串數組,其中需要一個字符串。請傳遞一個字符串。 – rgettman

回答

1

您的letterAverage方法期待一個String,但您傳遞一個字符串數組(String [])。

你需要改變你的方法,以便它接受一個字符串數組,並可能改變實現來解釋它。

0
public static void main(String args[]){ 
    String[] letters = {"a", "b", "c"}; 
    for (int i = 0; i < letter.length; i++) { 
     letterAverage(letters[i]); // error 
    } 
} 
1

人,試試這個

String[] letters = {"a", "b", "c"}; 
for (String s : letters) 
    letterAverage(s); 

並更改該

if(letterGrade == "a") 

這個

if("a".equals(letter)) 

這是一個有效的方式來比較字符串,使用equals()

+0

@ElliottFrisch我改了句子,說這是有效的方式,所以還有其他的方式就像你說的。 –

0

關於如何使用您的方法,已有優秀的答案。但是,如果您輸入的是成績列表,則可能需要按相同順序返回平均值列表。對於您可以執行以下操作:

public class Tester { 
    public static double[] letterAverage(String... letterGrades) { 
     double[] averages = new double[letterGrades.length]; 

     for (int i = 0; i < letterGrades.length; i++) { 
      String letterGrade = letterGrades[i]; 
      double letterAverage = 0; 
      if (letterGrade == "a") { 
       System.out.println(99/4); 
      } else if (letterGrade == "b") { 
       System.out.println(88/2); 
      } else { 
       System.out.println(77/3); 
      } 
      averages[i] = letterAverage; 
     } 
     return averages; 
    } 

    public static void main(String args[]) { 
     String[] letters = { "a", "b", "c" }; 
     double[] averages = letterAverage(letters); 
    } 
}