You are not logged in.

  • Login

Dear visitor, welcome to Coder Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

1

Sunday, April 25th 2010, 11:18am

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...


Java Quellcode

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


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

2

Sunday, April 25th 2010, 11:40am

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

3

Sunday, April 25th 2010, 5:27pm

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.

This post has been edited 1 times, last edit by "Tetris" (Apr 26th 2010, 11:00am)


Similar threads

Social bookmarks