2016-04-30 7 views
-3

Ich versuche, eine Methode zu erstellen, die den Modus eines Arrays zurückgibt (ich frage nicht, wie man die Methode erstellt und würde mir lieber keine Ideen geben. Für diejenigen von euch, die meine Fragen kritisieren für Wiederholungen von anderen weiß ich, dass die Antwort bereits auf dieser Website ist. Das ist nicht die Frage). Ich habe eine Methode, in einer Klasse BasicMathMethods genannt, getTotal genannt:Typ Inkompatibilität

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

Und ich versuchte, diese Methode in meinem Modus Methode zu verwenden:

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

jedoch mein Compiler (die blaue J ist durch Der Weg) sagt "Inkompatible Typen: int kann nicht in int []" und Highlights (a, Element) konvertiert werden. Ich verstehe den Fehler nicht. Ich sehe nicht, wo ich int [] in int zu konvertieren versuche. Kann mir jemand sagen, was der Fehler ist und erklären?

+0

Ihr Code ist voller Stilattacken. 1) Starten Sie den Namen einer lokalen Variablen niemals mit einem Großbuchstaben. 2) Niemals den Namen einer Methode mit einem Großbuchstaben beginnen. 3) Verwenden Sie konsistente Einrückungen. –

+0

Sorry, dass mein Code dich stört ... Ich bin ein Anfänger. – Alioune

+0

Wenn Sie die Ausnahme gegoogelt hätten, hätten Sie gesehen, dass Sie kein 'int' in einer Variablen speichern können, die als' int-Array' deklariert ist. –

Antwort

0

Wenn Sie den Wert, den Sie von BasicMathMethods.getTotal(a, element) zu einem Array erhalten hinzufügen möchten, gibt es ein paar Komplikationen. Sie wissen nicht, wie viele Werte Sie bekommen werden. Daher können Sie die erforderliche Größe des Arrays nicht kennen.

Verwenden Sie eine ArrayList anstelle eines Arrays.

Aber noch wichtiger. Ich möchte auf wichtige Probleme bei Ihrer Vorgehensweise hinweisen, um die mode zu erhalten. Lesen Sie den folgenden Code, um zu sehen, ob es Sinn macht.

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

Ich verstehe. Das ist sehr schlau. Vielen Dank. – Alioune

3

Sie geben ein int von getTotal zurück und versuchen, es in eine Variable int [] zu setzen.

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

Der Rückgabetyp getTotal ist int

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

Ich dachte, dass es ein Array von ganzen Zahlen sein sollte, deshalb habe ich int [] large = BasicMathMethods.getTotal (a, element) gesetzt. Ich wollte, dass die Ganzzahlen dem Array hinzugefügt werden. Wie würde ich das tun? – Alioune

+0

Sie sollten dies lesen. https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html Unter anderem zeigt es Ihnen, wie Sie eine ganze Zahl in ein Array setzen. –

Verwandte Themen