Lotto

Kranked

Mitglied
Hallo zusammen,

ich habe ein Problem und hänge seit 2 Stunden an dem Programm und finde nicht den richtigen Weg??
Ich möchte in dem Programm die Lottozahlen ausgegeben lassen und für die Zusatzzahl mit einem Contain die Lottozahlen überprüfen und dadurch die Zusatzzahl aus den restlichen 43 erzeugen lassen!!! Mein Problem besteht darin das ich noch nie mit Contain gearbeitet habe!!!

Java:
import java.util.HashSet;
import java.util.Random;
import java.util.Set;

public class Lotto {

	public static void main(String[] args) {
		Random random = new Random();
		System.out.println("Lottoziehung: \n");
		Set<Integer> lottozahlen = new HashSet<Integer>();
		while (lottozahlen.size() < 6) {
			lottozahlen.add(random.nextInt(49)+1);
		}
		for (Integer i : lottozahlen) {
			System.out.println("Lottozahlen: " + i);

		}
	
		Set<Integer> zusatzzahl = new HashSet<Integer>();
		while (zusatzzahl.size() < 1) {
			zusatzzahl.add(random.nextInt(49)+1);
		}
		for (Integer n : zusatzzahl) {
			System.out.println("\n Zusatzzahl: " + n);

		}
	}
}
 

eRaaaa

Top Contributor
Also du suchst jetzt wahrscheinlich so etwas wie:
Java:
			int zufallszahl = random.nextInt(49) + 1;
			if (!lottozahlen.contains(zufallszahl))
				zusatzzahl.add(zufallszahl);

Wobei das Set für die Zusatzzahl irgendwie unnötig ist ? ;/
 

Kranked

Mitglied
@eRaaaa,

danke für das Programm Teil!!! Kannst du mir bitte erklären wofür das "!" und die "zufallszahl" zusammen gehören und wie das funktioniert??

Und warum ist das zweite Set Überflüssig ist, da wenn ich immer versucht habe das herauszunehmen immer Fehler bekommen habe??
 

XHelp

Top Contributor
Bin zwar nicht eRaaaa, aber ich hoffe er hat nichts dagegen:

! ist negation.
Du generierst zuerst irgendeine Zahl.
mit
Code:
lottozahlen.contains(zufallszahl)
überprüfst du, ob die deine generierte Zahl bereits als Lottozahl ausgeworfen wurde. Kriegst also entweder true oder false. Du brauchst aber genau das Gegenteil. Und da kommt die Negation ins Spiel, die aus true>false und aus false>true macht.
D.h. du akzeptierst die generierte Zahl nur, wenn die NICHT als Lottozahl ausgeworfen wurde.
Das ist also das gleiche wie:
Java:
if (lottozahlen.contains(zufallszahl)) {
} else {
  zusatzzahl.add(zufallszahl);
}
(aber sowas zu benutzen ist eher unratsam)
 

eRaaaa

Top Contributor
@eRaaaa,

danke für das Programm Teil!!! Kannst du mir bitte erklären wofür das "!" und die "zufallszahl" zusammen gehören und wie das funktioniert??

Als Worte übersetzt heißt das nicht mehr als:
Wenn "lottozahlen" die Zufallszahl nicht enthält, füge diese Zufallszahl dem Set hinzu.
Das "nicht" ist das "!".

Und warum ist das zweite Set Überflüssig ist, da wenn ich immer versucht habe das herauszunehmen immer Fehler bekommen habe??

Naja ein Set mit nur einer Zahl macht an für sich keinen Sinn, man könnte auch folgendes schreiben
Java:
		int zusatzzahl;
		do {
			zusatzzahl = random.nextInt(49) + 1;
		} while (lottozahlen.contains(zusatzzahl));
		System.out.println("\n Zusatzzahl: " + zusatzzahl);

oder aber du generierst nicht 6 Zahlen am Anfang sondern direkt 7 und sagst einfach die letzt Gezogene ist deine Zusatzzahl oder oder oder...gibt mehrere Ideen. Der Ansatz hier, könnte rein theoretisch ja unendlich lang dauern, daher wählt man dafür meist eig. andere Vorgehensweisen, aber das sollte dich jetzt nicht verwirren, wollts nur anmerken :>
 

Kranked

Mitglied
Würden diese Zeilen nicht bedeuten, dass wenn die Zufallszahl in der Lottozahl bereits genannt ist dann als zufallszahl ausgegeben wird und nicht anders herum??


Java:
 while (lottozahlen.contains(zusatzzahl));
        System.out.println("\n Zusatzzahl: " + zusatzzahl);

Ja das habe ich auch schon Versucht mit den 7 Zahlen, habe aber leider das Problem das gefordert ist das die Zusatzzahl Einzel ausgegeben werden!!
 
Zuletzt bearbeitet:

Neue Themen


Oben