Zahlen im Array werden überschrieben

azom

Mitglied
Hallo Leute,

Bin derzeit dabei, ein Lotto-Programm zu schreiben, hänge jetzt aber seit Stunden daran, dass mein Tipps-Array (6 Zahlen), die in einem Tipp-Array (Schein) gespeichert werden sollten, immer nur den zuletzt eingegebenen Tipp beinhaltet.

Hab jetzt mal die meiner Meinung nach kritischen beiden Stellen rauskopiert:
Java:
Tip[] tip=new Tip[anzahl];                //anzahl= anzahl der Tipps, die man haben will.
for(int i=0; i<=anzahl-1; i++)
    {
	tip[i]=new Tip();                     //Tip aus dem Array von oben wird gemacht.
	tip[i].schnellTip();	           //der Zahlen-Array des Tipp-Objektes wird aufgefüllt.
	schein.addToTipp(tip[i]);          //das Objekt wird im Tipp-Array des Scheins eingefügt
    }                                            

//hier ist die Schein-Klasse, in der die 12 Tipp-Objekte gespeichert werden sollen

public class Schein 
{
	
public Tip[] schein=new Tip[12];        //Tipp-Array wird gemacht
int zahler=0;

	public void addToTipp(Tip tip) 
	{
	schein[zahler]=tip;                  //tip[i] von oben wird in den Tipp-Array von schein eingetragen
                                                   //hier liegt anscheinend der Fehler, aber ich komm nicht drauf...
	zahler++;	
	}
	
	public void printSchein(int x)
	{
	System.out.println();
	System.out.println("Lottoschein:");
	System.out.println("============");
	
		for(int i=1; i<=x; i++)
		{
		System.out.print("Tipp "+i+". :\t");
		schein[i-1].printTip();
		}
	}
	
}

Sind zum Beispiel 5 Tipps angelegt worden, wird bei der Ausgabe 5 mal der zuletzt eingetragene Zahlen-Array des Tipp-Objektes ausgegeben.

Wie bekomm ich das hin, dass der letzte Eintrag nicht alle vorherigen überschreibt?

Gruß
Thomas
 
Zeig mal die beiden Klassen Tip und Schein.

Java:
public class Schein 
{
    
public Tip[] schein=new Tip[12];

So eine Benennung ist nicht wirklich sinnvoll. Schein ist kein Tip.
 
Die Schein-Klasse

Java:
import java.util.Arrays;

public class Schein 
{
	
public Tip[] tipsammlung=new Tip[12];
int zahler=0;

	public void addToTipp(Tip tip) 
	{
	tipsammlung[zahler]=tip;
	zahler++;	
	}
	
	public void printSchein(int x)
	{
	System.out.println();
	System.out.println("Lottoschein:");
	System.out.println("============");
	
		for(int i=1; i<=x; i++)
		{
		System.out.print("Tipp "+i+". :\t");
		tipsammlung[i-1].printTip();
		}
	}	
}

Die Tip-Klasse(Tipp und Tip Bennenungen ist wohl ein wenig ungünstig für die Übersicht 😛)

Java:
import java.util.Random;
import java.util.Arrays;

public class Tip 
{
	
static int zahlen[]=new int[6];
private static boolean erfolg = true;

	public void schnellTip()
	{
	int[] vergleich = new int[7];
	Random rand=new Random();
			
		for(int i=0; i<=5; i++)
		{
		zahlen[i]=rand.nextInt(45)+1;
		vergleich[i]=zahlen[i];
		}
			
	Arrays.sort(zahlen);
	
		for(int i=0; i<=4; i++)
		{
			if(zahlen[i]==zahlen[i+1])
			{
			erfolg=false;
			}
			else
			{
			erfolg=true;
			}
		}
	}
	
	public void Tipp(int[] tipps)
	{
		for(int i=0; i<=5; i++)
		{
		zahlen[i]=tipps[i];
		}
	Arrays.sort(zahlen);
	
	}

	public void printTip()
	{
		for(int i=0; i<=5; i++)
		{	
		System.out.print("["+zahlen[i]+"]"+"\t");
		}
	System.out.println();
	}
	
}

Hab jetzt nochmal an mehreren Stellen die Zahlen-Arrays ausgeben lassen. Der Fehler liegt anscheinend wirklich daran, dass ich irgendwie mit jedem neuen Eintrag in den Tippsammlungs-Array alle vorherigen Einträge durch den letzten ersetze.
Komm trotzdem noch nicht drauf, warum... steh wohl irgendwie auf der Leitung.
 
Java:
static int zahlen[]=new int[6];

Dadurch das dein Array statisch ist, haben alle Tip Objekte die gleichen Zahlen.
 
hätte zu dem Thema noch eine Frage: Wie werden die Tipps bei dir von der Main Funktion in den Schein übergeben ?
Mit einer for-Schleife ?
Habe nämlich fast das gleiche Problem -_-
 

Zurück
Oben