Mehrfach auftretende Zahlen in Arrayfeld

Neue Frage »

Auf diesen Beitrag antworten »
MarcelSchietinger Mehrfach auftretende Zahlen in Arrayfeld

Meine Frage:
Aufgabe lautet:

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 Ideen:
also mein "programm" sieht bisher so aus:

class Feld
{
public static void main (String[] args)


{ int [] a = new int [10];
int [] zaehler= new int [10];
int cnt=0;


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 + " ");
}







}


}


ich hab int cnt=0; deklariert, diese zahl soll hochzählen sobald einträge im array gleich sind, nur weis ich nicht wo ich diesen zähler unterbringen muss...!

kann jmd helfen?
 
Auf diesen Beitrag antworten »
MaBa

Hallo Marcel,

das Füllen mit Zufallszahlen ist doch o.k. Jetzt musst du nur noch durch das Array wandern, dir jede Zahl merken und für den Rest des Arrays checken, ob die Zahl gleich deiner gemerkten Zahl ist. Ist das der Fall, dann kannst du deinen Counter incrementieren, ansonsten gehst du einfach weiter im Array.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
public class Feld
{
  public static void main (String[] args)
  {
    int [] a = new int [10];
    int cnt=1;

    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("\n\n");

    for(int i = 0; i < a.length; i++)
    {
      for(int j = i+1; j < a.length; j++)
      {
        if(a[j] == -1) continue;
      
        if(a[j] == a[i])
        {
          cnt++;
          a[j] = -1;
        }
      }

      if(a[i] != -1)
              System.out.println(a[i] + ": " + cnt + " mal");
      cnt = 1;
    }
  }
}


Das Belegen von a[j] mit -1 sollte helfen, dass jede Zahl nur einmal ausgegeben wird. (Das wird nachher bei der Ausgabe berücksichtigt).

Der Code ist nur eine "Skizze", daher nur quick&dirty und ungetestet.
Sollte aber so funktionieren und die Aufgabe erfüllen ;-)

Viele Grüße,
MaBa
 
Neue Frage »
Antworten »


Verwandte Themen