Array durchsuchen; Inhalt zählen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Array durchsuchen; Inhalt zählen

    Hallo,

    ich füge im folgenden einen Teil meines Quellcodes hinzu. Problem ist: Ich habe einen Array der Zufallszahlen aufnimmt.
    Im nächsten Schritt würde ich gerne die die Häufigkeit der zufälligen Zahlen zählen und diese Anzahl in einem Array abgelegen.
    Leider wird nur die Zahl 1 gezählt. Was mache ich falsch? Bei Fragen zum Quellcode bin ich natürlich bereit so schnell ich kann zu Antworten.
    Das Programm soll am Ende die relative Häufigkeit jeder gesuchen Zahl ausgeben...


    Quellcode

    1. [code]
    2. i = 1;
    3. j = 0;
    4. while(i < 6){ //bis max. Zufallszahl habe ich vorerst fest auf 6 vergeben
    5. while(j < eingabe+1){ //Eingabe ist die Anzahl der Zufallszahlen die erzeugt werden (Beispiel 7; es werden 7 Zufallszahlen von 1 bis 6 erzeugt)
    6. if (zufallszahlspeicher[j] == i){ //hier soll verglichen werden
    7. System.out.println("ZZspeicher:= " + zufallszahlspeicher[j]); //Testausgbe
    8. zahler = zahler + 1;
    9. }
    10. System.out.println("ZAHLER=: "+ zahler); //Testausgabe
    11. addierteHaufigkeit[k] = zahler;
    12. j = j + 1;
    13. }
    14. i = i +1;
    15. k = k + 1;
    16. zahler = 0;
    17. }[/code]
    Alles anzeigen


    Hier noch einen Ausgabe die ich mir wie im Quelltext kommentiert zum testen anzeigen lasse:

    Zufallszahl 1 = 5
    Zufallszahl 2 = 6
    Zufallszahl 3 = 1
    Zufallszahl 4 = 2
    Zufallszahl 5 = 4

    ZAHLER=: 0
    ZAHLER=: 0
    ZZspeicher:= 1
    ZAHLER=: 1
    ZAHLER=: 1
    ZAHLER=: 1
    ZAHLER=: 1

    Die 1 wird gefunden, was passiert dann mit der äußeren Schleife?

    Bin über jeden Tipp dankbar.

    Grüße Tetris
  • du setzt j nicht zurück ;) deswegen durchläuft er die innere Schleife nur einmal und das unabhängig von der äußerem schleife.

    Abgesehen davon würden sich für diesen Zweck for-schleifen besser eignen als while schleifen. Die machen zwar auch nichts anderes, aber kann sowas wie mit dem nicht zurückgesetzten j nicht passieren. Und der Code sieht dann auch aufgeräumter aus.

    Übrigens prüfst du auch nur die Zahlen bis 5 nicht bis 6 ;)
  • Rondrer schrieb:

    du setzt j nicht zurück ;) deswegen durchläuft er die innere Schleife nur einmal und das unabhängig von der äußerem schleife.

    Abgesehen davon würden sich für diesen Zweck for-schleifen besser eignen als while schleifen. Die machen zwar auch nichts anderes, aber kann sowas wie mit dem nicht zurückgesetzten j nicht passieren. Und der Code sieht dann auch aufgeräumter aus.

    Übrigens prüfst du auch nur die Zahlen bis 5 nicht bis 6 ;)


    j = 0; Gut wunderbar. Irgendwie habe ich das zwei Tage übersehen. For-Schleifen sollten kein Problem darstellen. Ich verstehe aber im Moment nicht wieso ich es einmal zu wenig durchlaufen lasse. Wo wird dir das ersichtlich?


    Funktioniert nun, kann abgehakt werden.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Tetris ()