2016-04-30 14 views
-3

私は配列のモードを返すメソッドを作成しようとしています(メソッドの作り方を尋ねるのではなく、私には何の考えもしません。他の人が繰り返していることについては、私はこの回答が既にこのウェブサイトにあることを知っています。私はBasicMathMethodsというクラスで、メソッドを作った、getTotal呼ば:タイプの非互換性

public static int getTotal(double[] a, int b) 
{ 
    int count = 0; 
    int Element; 
    for(Element = 0; Element < a.length; Element++) 
    { 
     if(a[b] == a[Element]) 
     { 
      count++; 
     } 
    } 
    return count; 
} 

そして私は私のモード法では、このメソッドを使用してみました:

public static double Mode(double[] a) 
{ 
    for(int element = 0; element < a.length; element++) 
    { 
     int[] largest = BasicMathMethods.getTotal(a, element);// gets the count of each element 
     Arrays.sort(largest); 
     if(BasicMathMethods.getTotal(a, element) == largest.length) 
     return a[element]; 
    } 
} 

しかし、でブルーJである私のコンパイラ(その方法は) "互換性のない型:intはint []"に変換できず、ハイライト(a、要素)に変換されます。私はエラーを理解していない。私はint []をintに変換しようとしているところがわかりません。誰がエラーが何であるか教えてくれて説明できますか?

+0

あなたのコードはスタイルアトロシクスでいっぱいです。 1)大文字のローカル変数の名前を決して開始しないでください。 2)大文字でメソッドの名前を開始しないでください。 3)一貫したインデントを使用する。 –

+0

申し訳ありませんが、私のコードはあなたを邪魔しています...私は初心者です。 – Alioune

+0

もしあなたが例外を見つけたのであれば、 'int配列'として宣言された変数に 'int'を格納することはできません。 –

答えて

0

です。どのくらいの価値が得られるかは分かりません。したがって、必要な配列のサイズを知ることはできません。

アレイの代わりにArrayListを使用してください。

さらに重要なことですが、私はmodeを取得するあなたのアプローチの主要な問題を指摘したいと思います。下のコードを読んで意味があるかどうかを確認してください。

public static double mode(double[] a) { 

    double currentBestCandidate = a[0]; 
    int countCurrentBestCandidate = BasicMathMethods.getTotal(a, 0); 

    // we already have index 0, lets start from 1 
    for(int element = 1; element < a.length; element++) { 
     int count = BasicMathMethods.getTotal(a, element); 

     // if this count is greater than what we have 
     // right now, we need to update currentBestCandidate 
     // and countCurrentBestCandidate 
     if(count > countCurrentBestCandidate) { 
      currentBestCandidate = a[element]; 
      countCurrentBestCandidate = count; 
     } 
    } 
    return currentBestCandidate; 
} 
+0

私は参照してください。これはとても賢いです。ありがとうございました。 – Alioune

3

getTotalからintを返し、int []変数に入れようとしています。

int[] largest = BasicMathMethods.getTotal(a, element); 

getTotalの戻り値の型は、あなたが配列にBasicMathMethods.getTotal(a, element)から取得した値を追加したい場合は、いくつかの合併症があるint

public static int getTotal(double[] a, int b) 
+0

私はそれが整数の配列であると考えられていたので、int []の最大値= BasicMathMethods.getTotal(a、要素)を入れたのです。私はそれが配列に整数を追加したかった。どうすればいい? – Alioune

+0

これをお読みください。 https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html特に、配列に整数を配置する方法を示します。 –

関連する問題