mehrfach auftretende zahlen in einem array

marcelb

Mitglied
Àlso die Aufgabe ist:
Erstellen sie ein Array mit 10 natürlichen Zufallszahlen aus dem Intervall[0,9] und berechnen Sie welche Elemente im Array mehrfach auftreten und wie oft sie auftreten.

meine bisherigar ansatz ist so:

Java:
class Fuckoff
{
     public static void main (String[] args)


  {  int [] a = new int [10];
     int [] zaehler= new int [10];
     int cnt=0;        // soll hochgezählt werden, wenn Zahlen öfters auftreten!


    for(int i=0;i<a.length;i++)
    {
		int zufallszahl=(int)(Math.random()*10); // nat.Zufallszahl aus dem Intervall [0;9]
		a[i]=zufallszahl;
		System.out.print(a[i] + " ");



	}

	System.out.println();
	System.out.println();
	System.out.println();

	for(int k=0;k<zaehler.length;k++)
	{
		zaehler[k]=0;
		System.out.print(zaehler[k] + " ");
	}

	System.out.println();
	for(int j=0;j<10;j++)
	{
		System.out.print(j + " ");
	}


  }


}

ausgabe ist dann z.B.:

8 7 1 6 0 0 4 0 0 8


0 0 0 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7 8 9


die zweite reihe mit den nullen soll nun anzeigen welche zahl wie oft vorkam, da hängt es bei mir.

mein problem ist nun, ich weis nicht wo ich den cnt einbauen muss, damit er hochzählt bei gleichen
zahlen und die if bedingung wenn zahlen gleich seien, bekomme ich auch nciht hin..
kann jmd helfen?
 
Java:
static int[] count(int[] array) {
	int[] counter = new int[10];
	for(int i : array) {
		counter[i]++;
	}
	return counter;
}
 
Hier hin:
Java:
    for(int i=0;i<a.length;i++)
    {
		int zufallszahl=(int)(Math.random()*10); // nat.Zufallszahl aus dem Intervall [0;9]
		a[i]=zufallszahl;
        zaehler[zufallszahl] = zaehler[zufallszahl] + 1;
		System.out.print(a[i] + " ");
	}

Und achte bitte auf die Benennung deiner Klassen.
 
Bei einem Array mit 1000000000 Elementen und Zufallszahlen zwischen 0 und 1 (einschließlich 😀 ) gäbe es da auch noch Alternativen 😉
 
was ich nicht verstehe ist wie ich die ausgabe so hinbekomme,dass es wie folgt angezeigt wird:

8 5 3 5 0 1 7 8 9 4

1 1 0 1 1 2 0 1 2 1
0 1 2 3 4 5 6 7 8 9

und am besten eher nach dem vorschlag von final striker, weil wir befehle wie return noch garnicht hatten, also das versteh ich sowieso nicht..also nur mit system.out.print..und for-schleifen...
 
Zuletzt bearbeitet:
ok cool, so funktioniert es auf jeden fall. aber warum es geht, versteh ich glaub ich nicht so ganz...


hier
Java:
for(int i=0;i<a.length;i++)
    {
        int zufallszahl=(int)(Math.random()*10); // nat.Zufallszahl aus dem Intervall [0;9]
        a[i]=zufallszahl;
        zaehler[zufallszahl] = zaehler[zufallszahl] + 1;
        System.out.print(a[i] + " ");
    }

wird ja bei dem zaehler array an der stelle (zufallszahl) jeweils hochgezählt.

und unten bei der for-schleife mit k:
Java:
for(int k=0;k<zaehler.length;k++)
    {
        System.out.print(zaehler[k] + " ");
    }
wird der zaehler an der stelle k ausgegeben, werden die zaehler werte aus der ersten for schleife gespeichert oder warum zeigt er genau die anzahl der zahlen an?
 

Zurück
Oben