Methode funzt nicht => Zufallszahl darf nicht 2x erschein

Status
Nicht offen für weitere Antworten.

Paci

Mitglied
Hallo zusammen. Ich hab ein Problem mit ner Methode, aber ich weiß nicht, warum sie nicht funktioniert.
Es geht darum, dass man beim Erzeugen eines Konto-Objekts sich eine EC-Nummer holt, die zufällig generiert wird. Diese Nummer darf allerdings keine zweimal vergeben werden.

Ich habe zwei Vektoren. Der eine heißt "vector"...da stehen die ganzen konstruierten Konto-Objekte drin. Der andere heißt "ecNummern", wo die ganzen Ec-Nummern drinstehen sollen.

Vector vector = new Vector();
Vector ecNummern = new Vector();

Also, das Anlegen der Objekte funzt so:
vector.add (new DGirokonto ("Peter Maffay",20,getLaufnummer(),getEcNummer()));

Die Methode getEcNummer steht hier. Sie soll dafür sorgen, dass keine Zahl im EC-Nummern-Vektor zweimal auftaucht...bzw, die generierte Zahl soll erst hinzugefügt werden, wenn sichergestellt ist, dass der Vektor die Zahl nicht schon bereits hat. Ich hab auch schon mal 10 Konten in den Code zum Erzeugen geschrieben und die random-Number auf 10 gesetzt...aber auch da kommt keine unendlich-Schleife zustande... 🙁

Code:
int getEcNummer()
	{
		System.out.println ("Methode aufgerufen");
		int zahl = (int)Math.ceil(Math.random()*10);
		System.out.println ("Zahl gesetzt "+ zahl);
		boolean besetzt = false;
		boolean frei = false;
		System.out.println ("Boolean besetzt gesetzt.");
		
		if (ecNummern.size()>0)
		{
			System.out.println ("If-Schleife wird ausgeführt");
			while (frei == false)
			{	
				besetzt = false;
				System.out.println ("While-Schleife gestartet");
				int zufall = (int)Math.ceil(Math.random()*10);
				System.out.println ("Zufallszahl gesetzt auf " + zufall);
				System.out.println ("For-Schleife läuft durch");
			
	 			for (int s = 0; s > (ecNummern.size()); s++)
				{
					Object o = ecNummern.get(s);
					String p = (String) o; //o ließ sich nicht direkt in einen integer umwandeln
					int t = Integer.valueOf(p);
					if (zufall == t)
					{
						besetzt = true;
						System.out.println ("Nummer gibts schon! While-Schleife nochmal...");
					}
				}
			
				if (besetzt == false)
				{
					System.out.println ("Nummer existiert nicht.  While-Schleife endet...");
					zahl = zufall;
					frei = true;
				}
			}
		}
		
		System.out.println ("Zahl wird zu Vektor hinzugefügt");
		ecNummern.add(zahl);
		System.out.println ("Zahl wird returned");
		System.out.println ("");
				
		System.out.println("=====EC-VEKTOR=====");			
		for (int z = 0; z < ecNummern.size(); z++)
		{
			System.out.println (ecNummern.get(z));
		}
		System.out.println("=====EC-VEKTOR=====");
		
		
		return zahl;
	}

Hier nochmal ohne die prints:

Code:
int getEcNummer()
	{
		int zahl = (int)Math.ceil(Math.random()*10);
		boolean besetzt = false;
		boolean frei = false;
		if (ecNummern.size()>0)
		{
			while (frei == false)
			{	
				besetzt = false;
				int zufall = (int)Math.ceil(Math.random()*10);
			
	 			for (int s = 0; s > (ecNummern.size()); s++)
				{
					Object o = ecNummern.get(s);
					String p = (String) o; //o ließ sich nicht direkt in einen integer umwandeln
					int t = Integer.valueOf(p);
					if (zufall == t)
					{
						besetzt = true;
					}
				}
			
				if (besetzt == false)
				{
					zahl = zufall;
					frei = true;
				}
			}
		}
		

		ecNummern.add(zahl);

				
	//	for (int z = 0; z < ecNummern.size(); z++)
	//	{
	//		System.out.println (ecNummern.get(z));
	//	}

		
		return zahl;
	}

Die Methode an sich scheint wie gesagt nicht zu funzen...im Vektor stehen nachher trotzdem doppelte Zahlen..hab ich hier im Methoden-Code irgendwas falsch...?
 
In deinem Vektor befinden sich, so wie ich das Sehe, keine Integer sondern Objekte vom Typ "DGirokonto". Also innerhalb der "For"-Schleife:

Code:
DGirokonto o = (DGirokonto)ecNummern.get(s); 
// auf Getter für EC-Nummer in DGirokonto zugreifen
int t = o.getECNummer(); // Schaete mal der Getter heisst so            
if (zufall == t)  { 
      besetzt = true; 
} 
...
 
Hallo,

Hab ein C++ Methode

bool CKamera::Hoehenberechnung(const string& fahrzeugtyp, float& a_korr)

wie lässt sich dies in Java umsetzen.

Danke Schwoaga

Dieser Beitrag wurde von L-ectron-X am 31.07.2006 um 14:45 Uhr editiert.
@schwoaga: Bitte ein neues Thema öffnen und nicht in Threads hineinposten, die mit deiner Frage nichts zu tun haben.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben