Modus berechnen?

Status
Nicht offen für weitere Antworten.
D

DigitalBoy

Gast
Hallo @all

Wer kann mir helfen?

Ich versuche den Modus zu "berechnen". Ich weiß nur nicht wie ich das in Java Code umwandeln kann.

Für die, die nicht wissen was der modus ist. Modus bedeutet der dichteste Wert.

Bsp.: 1, 2, 3, 4, 5, 6, 7, 1, 1, 1, 8, 9, 0

So hier wäre der Modus die 1, da die 1 hier am häufgisten vorkommt.

Ich bin soweit, daß ich die Zahlen eingebe und in einem Array sortieren lasse. Das klappt ja auch wunderbar.

Aber wie bekomme ich es jetzt hin, das er mit den Modus ausgibt?

Wer kann helfen?


Gruß

DigitalBoy
 
B

bygones

Gast
möglichkeit wäre über die eingabe zu iterieren und per Map Struktur sich die gefunden Ziffern als key zu speichern und die Häufigkeit als Value...
 
D

DigitalBoy

Gast
Was?

Ich bin noch Anfänger in der Java-programmierung.

Daher weiß ich nicht was du menst.

Gruß

DigitalBoy
 
G

Guest

Gast
Hier ist mal mein Code:

Code:
public class aritmethischesMittelVarianzModus {
    
    /* Methode zur Eingabe von double Werten */
    static int Eingabe(){
    
        String s = "";
        int f = 0;
        
        java.io.BufferedReader d = new java.io.BufferedReader(
        new java.io.InputStreamReader(System.in));
        
        try { s = d.readLine(); 
        }
        catch (java.io.IOException e) 
        {
        }
        
        try { f = Integer.valueOf(s).intValue(); 
        }
        catch (NumberFormatException e)
        
        {System.out.println("String Conversion to int failed" + e);
        }
        return f;
    
    }
    
     /* Gibt die Werte eines Arrays ganzer Zahlen aus. */
     public static void gibAus(int[] modus){
        
        System.out.println();
        for (int i = 0; i < modus.length; i = i + 1){
            System.out.print(modus[i] + " ");
        }
    }
     
            
  /**
   * Algorithmus "Quicksort"
   */
  public static void quicksort(int[] array, int index1, int index2) {
    
    int i = index1;
    int j = index2;
    
    int x = array[(index1 + index2) / 2];
    
    while (i <= j) {
    
      /* Invariante: es gibt ein p >= i mit a[p] >= x
       * und es gibt ein q <= j mit a[q] <= x.
       * Die beiden folgenden Schleifen terminieren somit immer. */
      
      while (array[i] < x) {
        i = i + 1;
      }
      while (array[j] > x) {
        j = j - 1;
      }
      
      /* Elemente vertauschen. */
      if (i <= j) {
        int w = array[i];
        array[i] = array[j];
        array[j] = w;
        i = i + 1;
        j = j - 1;
      }
      
    }
    
    if (index1 < j) {
      quicksort(array, index1, j);
    }
    if (i < index2) {
      quicksort(array, i, index2);
    }
  }
  
  /**
   * Quicksort mit Zahlenfolge als Parameter.
   */
  public static void quicksort(int[] array) {
    
    /* Eigentlicher Algorithmus ist in überladener Methode implementiert. */
    quicksort(array, 0, array.length - 1);
  }
  
    
    public static void main (String[] args) {
        
        // Summer der Zahlen
        int summeZahlen = 0;
        // Die einzelnen Zahlen
        int zahlen = 0;
        // Array Erstellung
        int array[];
        // Variable dür das Ergebnis des arithmetischen Mittels
        double aM = 0;
        // Variable für das Ergebnis der Summe
        double summe = 0;
        // Für die Darstellung kann man eine Hilfsvariable benutzen
        int j = 0;
        
        
        System.out.print ("Bitte geben Sie die Anzahl der Elemente an: ");
        summeZahlen = Eingabe();
        
        /** Entgültiges anlegen des Arrays. Es wurde bisher nur der Name masse im
         *  Speicher für das zukünftige Array erstellt. Dies liegt daran, man weiß
         *  ja nicht wie groß es wird. Die größe ist von der Eingabe der Zahlen
         *  abhängig.
         */
        array = new int [summeZahlen];
                
        for (int i = 0; i < summeZahlen; i++) {
            j = i + 1;
            
            System.out.print ("Bitte " + j + " .Zahl eingeben: ");
            zahlen = Eingabe();
            array[i] = zahlen;
        
            summe += array[i];
        }
                
        
    aM = summe / summeZahlen;
    
    System.out.println ();
    System.out.println("Ausgabe");
    System.out.println("Das arithmetische Mittel beträgt: " + aM);
    System.out.print("Der Modus ist: ");
    quicksort(array);
    gibAus(array);
    }
}
 
D

DigitalBoy

Gast
Bei meinem Code hier oben, stelle ich mir gerade die Frage, ob ich überhaupt sortieren muß?

Kann ich nicht so eine art zähler erstellen, der jede Zahl hochrechnet und die mit den meisten zahlen ausgibt?

Wie kann ich denn sowas realisieren?
 

Sky

Top Contributor
Nimm einfach ein int-Array und zähl die Position hoch, die deine Zahl repräsentiert.

Code:
int[] arrModus = new int[10];
int iEingelesen = ... // hier die Zahl kommt gerade von der Konsole
arrModus[iEingelesen]++; // Zähler für die eingelesene Zahl hochzählen

Danach nur noch mal gucken, welche Zahl in dem Array am größten ist und Du bist schon fertig.
 
G

Guest

Gast
Die größte Zahl aus einem Array zu lesen wäre ja nicht das Thema.

Da meine Zahlen eh schon in einem array stehen. Ich muß die am häufigsten vorkommende Zahl aus dem Array lesen.

Und genau da hab ich mein problem

Aber trotzdem danke für die tipps
 
D

DigitalBoy

Gast
Ah jetzt versteh ich was du meinst

Yo probier ich, mal aus. Hoffentlich bekomme ich das hin
 

Sky

Top Contributor
Anonymous hat gesagt.:
Die größte Zahl aus einem Array zu lesen wäre ja nicht das Thema.

Da meine Zahlen eh schon in einem array stehen. Ich muß die am häufigsten vorkommende Zahl aus dem Array lesen.

Und genau da hab ich mein problem

Aber trotzdem danke für die tipps

Das macht mein Code doch! Wenn Du eine "1" einliest, so wird in arrModus[1] die aktuelle Zahl inkrementiert. (ist also nach dem 1. Schritt gleich 1). Wenn Du dann die "2" einliest, so wird arrModus[2] erhöht usw.

Am Ende wurde -bezogen auf dein Beispiel- am häufigsten arrModus[1] erhöht. Somit ist die Größte Zahl des Array "arrModus" gleich der Zahl, die am häufigstem vorkommt!

EDIT: Ok, Du hast schneller verstanden, als ich meine Antwort schreiben konnte. Hoffe, es hat geholfen.
 
D

DigitalBoy

Gast
Also müßte das bei meinem Code da oben (ohne den quicksort Algo) so aussehen oder?

Code:
// Array für das hochzählen
        int arrayModus[];
        // Counter
        int iEingelesen = Eingabe();
.
.
.

arrayModus = [iEingelesen]++;

Weil ich eine Fehlermeldung bekomme die da lautet: illegal start of expression
 

Sky

Top Contributor
DigitalBoy hat gesagt.:
Code:
// Array für das hochzählen
        int arrayModus[];
        // Counter
        int iEingelesen = Eingabe();
.
.
.

arrayModus = [iEingelesen]++;

Code:
// Array für das hochzählen
int arrayModus[] = new int[10]; // GEÄNDERT!

// Counter
int iEingelesen = Eingabe();
arrayModus[iEingelesen]++; // GEÄNDERT!

Noch ein kleiner Tipp: die Methode 'Eingabe()' gibt im Fehlerfall '0' zurück, weil 'f' mit '0' initialisiert wurde. Besser, wenn Du mit 'int f = -1;' startest und deinen Code folgendermaßen erweiterst:

Code:
int iEingelesen = Eingabe();
if ( iEingelesen > -1 )
  arrayModus[iEingelesen]++;
 
D

DigitalBoy

Gast
Man ich glaube ich bin zu dumm zum programmieren :x

Code:
public class aritmethischesMittelVarianzModus02 {
    
    /* Methode zur Eingabe von double Werten */
    static int Eingabe(){
    
        String s = "";
        int f = 0;
        
        java.io.BufferedReader d = new java.io.BufferedReader(
        new java.io.InputStreamReader(System.in));
        
        try { s = d.readLine(); 
        }
        catch (java.io.IOException e) 
        {
        }
        
        try { f = Integer.valueOf(s).intValue(); 
        }
        catch (NumberFormatException e)
        
        {System.out.println("String Conversion to int failed" + e);
        }
        return f;
    
    }
    
      
    
    public static void main(String[] args) {
        
        // Summe der Zahlen
        int summeZahlen = 0;
        // Die einzelnen Zahlen
        int zahlen = 0;
        // Array Erstellung
        int array[];
        // Variable dür das Ergebnis des arithmetischen Mittels
        double aM = 0;
        // Variable für das Ergebnis der Summe
        double summe = 0;
        // Für die Darstellung kann man eine Hilfsvariable benutzen
        int j = 0;
        // Array für das hochzählen
        int arrayModus[];
        // Counter
        int iEingelesen = Eingabe();
        int modus = 0;
        
        System.out.print ("Bitte geben Sie die Anzahl der Elemente an: ");
        summeZahlen = Eingabe();
                        
        /** Entgültiges anlegen des Arrays. Es wurde bisher nur der Name masse im
         *  Speicher für das zukünftige Array erstellt. Dies liegt daran, man weiß
         *  ja nicht wie groß es wird. Die größe ist von der Eingabe der Zahlen
         *  abhängig.
         */
        array = new int [summeZahlen];
        arrayModus = new int [10];
        
                
        for (int i = 0; i < summeZahlen; i++) {
            j = i + 1;
            
            System.out.print ("Bitte " + j + " .Zahl eingeben: ");
            zahlen = Eingabe();
            array[i] = zahlen;
        
            summe += array[i];
        }
     
        arrayModus[iEingelesen]++;
        
        modus = arrayModus[iEingelesen];
        
    aM = summe / summeZahlen;
    
    System.out.println ();
    System.out.println("Ausgabe");
    System.out.println("Das arithmetische Mittel beträgt: " + aM);
    System.out.print("Der Modus ist: " + arrayModus);
    }
}

So sieht jetzt mein Code aus. Hab ich alles richtig eingefügt? Weil ich aufeinmal eine Endlosschleife habe??
 

Sky

Top Contributor
Hab mal ein bißchen was geändert:

Code:
public class aritmethischesMittelVarianzModus02 {
  /* Methode zur Eingabe von double Werten */
  static int Eingabe() {
    String s = "";
    int f = 0;
    java.io.BufferedReader d = new java.io.BufferedReader( new java.io.InputStreamReader(System.in) );
    try {
      s = d.readLine();
    } catch (java.io.IOException e) {
      e.printStackTrace();
    }

    try {
      f = Integer.valueOf(s).intValue();
    } catch (NumberFormatException e) {
      System.out.println("String Conversion to int failed" + e);
    }
    return f;
  }

  public static void main(String[] args) {
    // Summe der Zahlen
    int summeZahlen = 0;
    // Die einzelnen Zahlen
    int zahlen = 0;
    // Array Erstellung
    int array[];
    // Variable dür das Ergebnis des arithmetischen Mittels
    double aM = 0;
    // Variable für das Ergebnis der Summe
    double summe = 0;
    // Für die Darstellung kann man eine Hilfsvariable benutzen
    int j = 0;
    // Array für das hochzählen
    int arrayModus[];

    int modus = 0;

    System.out.print("Bitte geben Sie die Anzahl der Elemente an: ");
    summeZahlen = Eingabe();

    /** Entgültiges anlegen des Arrays. Es wurde bisher nur der Name masse im
     *  Speicher für das zukünftige Array erstellt. Dies liegt daran, man weiß
     *  ja nicht wie groß es wird. Die größe ist von der Eingabe der Zahlen
     *  abhängig.
     */
    array = new int[summeZahlen];
    arrayModus = new int[10];

    for (int i = 0; i < summeZahlen; i++) {
      j = i + 1;

      System.out.print("Bitte " + j + ". Zahl eingeben: ");
      zahlen = Eingabe();
      array[i] = zahlen;

      summe += array[i];
      // Modus innerhalb der Schleife hochzählen
      arrayModus[zahlen]++;
    }

    // HIER wird nun die Größte Zahl gesucht. Der Modus entspricht dem Index der
    // groesten Zahl (also i)
    int iPos = -1;
    int iMax = -1;
    for (int i = 0; i < arrayModus.length; i++) {
      if (arrayModus[i] > iMax) {
        iMax = arrayModus[i];
        modus = i;
      }
    }

    aM = summe / summeZahlen;

    System.out.println();
    System.out.println("Ausgabe");
    System.out.println("Das arithmetische Mittel beträgt: " + aM);
    System.out.print("Der Modus ist: " + modus);
  }
}
 
G

Guest

Gast
Hallo @sky80

Danke dir für deine Hilfe jetzt klappts.

Hmm wenn ich mir das so ansehe war das ja garnicht so schwer.

Vielen Dank für deine Hilfe.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
O modus stochastics Java Basics - Anfänger-Themen 17
H Eclipse , Design-Modus, unvollständige Darstellung Java Basics - Anfänger-Themen 0
J Interface Wechsel in den Windows7-Basis Modus Java Basics - Anfänger-Themen 7
K Exception nur im "Debug"-Modus und jedem 3.-5. mal Ausführen Java Basics - Anfänger-Themen 3
P Debug- Modus Java Basics - Anfänger-Themen 3
R Derby-Datenbank: Fehler beim Zugriff im Embedded Modus Java Basics - Anfänger-Themen 27
K Javac *.java führt in dos-modus zu "Zugriff Verweigert& Java Basics - Anfänger-Themen 16
J StandBy-Modus o. Tastatursperre mit Tast-Kombin? Java Basics - Anfänger-Themen 2
M OOP Brüche nicht richtig berechnen Java Basics - Anfänger-Themen 3
V Durchschnittliche Volatility in Prozent für 4 Stunden berechnen Java Basics - Anfänger-Themen 14
T Fibonacci mit einer Hilfsmethode berechnen Java Basics - Anfänger-Themen 10
laxla123 Quersumme berechnen Java Basics - Anfänger-Themen 1
I For Schleife Summe berechnen Java Basics - Anfänger-Themen 13
S Vollmond berechnen und ausgeben Java Basics - Anfänger-Themen 12
S Vollkommene Zahl berechnen und ausgeben Java Basics - Anfänger-Themen 16
A Berechnen Moor Nachbarschaft Java Basics - Anfänger-Themen 5
E Geburtstag im Schaltjahr berechnen Java Basics - Anfänger-Themen 24
Lion.King Schaltjahr berechnen Java Basics - Anfänger-Themen 31
E Alter (Laufzeit) berechnen Java Basics - Anfänger-Themen 11
I Zuschläge berechnen Java Basics - Anfänger-Themen 15
L mit Fakultät mathematische Formel berechnen Java Basics - Anfänger-Themen 5
TanTanIsTrying Durschnitt berechnen von eingegebener Zahl bis 1 heruntergezählt Java Basics - Anfänger-Themen 9
L Präfix berechnen Java Basics - Anfänger-Themen 33
F Abstand zwischen zwei Objekten berechnen wie? Java Basics - Anfänger-Themen 1
Aemulit Java Schaltjahr berechnen Code Java Basics - Anfänger-Themen 7
Poppigescorn Quersumme Berechnen mit einer While Schleife Java Basics - Anfänger-Themen 13
I Potenz berechnen mit for-Schleife Java Basics - Anfänger-Themen 3
A Standardabweichung in Java berechnen Java Basics - Anfänger-Themen 10
H Gesamtabweichung mit Array berechnen Java Basics - Anfänger-Themen 2
G Java Rabatt berechnen Java Basics - Anfänger-Themen 8
V Rückgeld berechnen Java Basics - Anfänger-Themen 6
eleonori Durchschnitt aller Werte eines Baums berechnen Java Basics - Anfänger-Themen 5
Ianatrix Zahlen von a bis b berechnen Java Basics - Anfänger-Themen 7
L Max, min, Summe und Durchschnitt berechnen Java Basics - Anfänger-Themen 4
L Anhalteweg berechnen Java Basics - Anfänger-Themen 6
Aeon Erste Schritte Preise berechnen mit do-while Java Basics - Anfänger-Themen 9
M Quadratwurzel berechnen Java Basics - Anfänger-Themen 8
V Wachstum berechnen und in Ist-Formel verwenden Java Basics - Anfänger-Themen 5
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Abschreibungsplan berechnen Java Basics - Anfänger-Themen 23
V Gehalt berechnen in Java Java Basics - Anfänger-Themen 6
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
L Anzahl der benachbarten Minen berechnen und setzen Java Basics - Anfänger-Themen 15
J Array Speicherplatz berechnen Java Basics - Anfänger-Themen 35
H Eingabedaten berechnen Java Basics - Anfänger-Themen 9
B Tranportkosten berechnen mit unterschiedlichen MwSt Java Basics - Anfänger-Themen 9
L Anzahl der Paare deren Summe = 0 ergibt berechnen Java Basics - Anfänger-Themen 0
V Erste Schritte Berechnen von Sinus; sin(x) ohne Math.* Java Basics - Anfänger-Themen 1
J Hilfe bei Java Aufgabe (Restschuld berechnen) Java Basics - Anfänger-Themen 11
N Ein Datum berechnen Java Basics - Anfänger-Themen 3
T Sparplan berechnen Java Basics - Anfänger-Themen 4
F Abstand zum Durchschnitt von 5 Zahlen berechnen... Java Basics - Anfänger-Themen 16
B java.util.Date berechnen Java Basics - Anfänger-Themen 11
P Mittelwert Arrayelemente berechnen Fehler Java Basics - Anfänger-Themen 5
CptK Best Practice Schussparabel berechnen Java Basics - Anfänger-Themen 3
T Modulo / Pow berechnen Java Basics - Anfänger-Themen 4
E Statistische Kennzahlen berechnen Java Basics - Anfänger-Themen 2
F Switch Case Modulo berechnen Java Basics - Anfänger-Themen 12
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
C Preis berechnen mit Java Java Basics - Anfänger-Themen 4
B Zahl in String abspeichern und später berechnen Java Basics - Anfänger-Themen 15
N Best Practice Image recognition fuzzy Superhash berechnen Java Basics - Anfänger-Themen 1
Dawinartor Erste Schritte Schaltjahr berechnen Java Basics - Anfänger-Themen 1
L Pi berechnen Java Basics - Anfänger-Themen 1
CptK Term (als String) berechnen und ausgeben Java Basics - Anfänger-Themen 10
L Den Winkel zwischen zwei Vektoren berechnen! Java Basics - Anfänger-Themen 2
J Variablen arithmetischen Mittelwert berechnen Java Basics - Anfänger-Themen 5
K Matrixen berechnen nach Worker Master Paradigma mit Threads Java Basics - Anfänger-Themen 4
R Winkel berechnen bzw. Geraden sortieren Java Basics - Anfänger-Themen 33
I Schnittpunkt zweier Geraden berechnen Java Basics - Anfänger-Themen 25
M Erste Schritte Mittelwert berechnen -> Methode in der Methode? Java Basics - Anfänger-Themen 14
S Compiler-Fehler Schaltjahr berechnen Java Basics - Anfänger-Themen 5
B Fakultätsfunktion Rekursiv Berechnen aber mit Array Java Basics - Anfänger-Themen 10
S Durchschnitt berechnen aus zwei Textfeldern Java Basics - Anfänger-Themen 21
D Summe berechnen mit verändertem Wert aus Schleife Java Basics - Anfänger-Themen 1
R Liga Berechnen Java Basics - Anfänger-Themen 1
P Klassen Berechnen mehrerer Map-Werte Java Basics - Anfänger-Themen 13
R Fussballtabellen berechnen Java Basics - Anfänger-Themen 12
J Fibonacci -Folge rekursiv berechnen Java Basics - Anfänger-Themen 18
J Durchschnitt jeder Zeile und und Spalte in einem 2D Arrays berechnen Java Basics - Anfänger-Themen 6
F ISBN Prüfziffer berechnen Java Basics - Anfänger-Themen 17
F Die Teilersumme einer Eingabe berechnen Java Basics - Anfänger-Themen 11
S Negafibonacci Folge berechnen Java Basics - Anfänger-Themen 24
G Array Mittelwert berechnen, wie? Java Basics - Anfänger-Themen 8
S Primzahlen berechnen funktioniert nicht richtig Java Basics - Anfänger-Themen 1
N Mit LocalDate alter berechnen Java Basics - Anfänger-Themen 3
J Laufzeit berechnen/Laufzeitanalyse Java Basics - Anfänger-Themen 2
N Arrays mit Zufallzahlen füllen und Statistiken berechnen Java Basics - Anfänger-Themen 5
A Wochentag berechnen Java Basics - Anfänger-Themen 10
Ste3et_C0st Vectoren berechnen Java Basics - Anfänger-Themen 8
L Durchschnitt in der Schleife berechnen Java Basics - Anfänger-Themen 11
A Kreisumfang/-Fläche vom Kreis berechnen Java Basics - Anfänger-Themen 39
L Wochentag berechnen Java Basics - Anfänger-Themen 5
L Rekursive Methode a * b berechnen Java Basics - Anfänger-Themen 2
B OOP Summe aus verschiedenen Instanzen einer Klasse berechnen Java Basics - Anfänger-Themen 2
N Dauer zwischen zwei LocalDateTime Objekten berechnen? Java Basics - Anfänger-Themen 4
P Ausdrücke berechnen Java Basics - Anfänger-Themen 2
V Mittelwert berechnen Java Basics - Anfänger-Themen 31
H Datentypen Tage zwischen zwei Datums berechnen Java Basics - Anfänger-Themen 4
P Quadrate berechnen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben