Lotto-Spiel

280794

Neues Mitglied
Hallo. 🙂
Wir sollen in der Schule ein Lotto Spiel programmieren, wobei man halt alle 6 Zahlen im Bereich von 1-49 richtig haben muss um zu gewinnen. (Also nix mit Zusatzzahl usw. ^^)

Ich bin auch schon meiner Meinung nach fast fertig. Probleme,kriege ich momentan nur mit der Überprüfung, ob ein Wert doppelt eingegeben wird. Damit meine ich, dass ich nach aktuellem Stand zum Beispiel 6x auf die 1 tippen kann... Ich habe schon einige Zeit herumprobiert, kriege aber nicht hin, dass er doppelte Zahlen abweist. Also ich fänd es richtig nett wenn ihr mir dabei helfen könntet. 🙂

Hier der Quellcode:
Java:
import java.util.*;
public class Lotto_Spiel
{
	public static void main(String args[])
	{
		// Variablen, Arrays anlegen
		Scanner eingabe = new Scanner(System.in);
		int Benutzer[] = new int[6];
		int Lotto[] = new int[6];
		int lottozahl_nummer = 1;
		
		
		eingeben(eingabe, Benutzer);
		
		
		ausgabe_auswahl(Benutzer);
		
		
		lottozahlen_ziehen(Lotto, lottozahl_nummer);
		
		
		gewonnen_oder_verloren(Benutzer, Lotto);
		
	}

	private static void gewonnen_oder_verloren(int[] Benutzer, int[] Lotto) // Überprüft ob man gewonnen hat (vergleicht Zufallszahlen mit getippten Zahlen)
	{
		if (Benutzer[0] == Lotto[0] && Benutzer[1] == Lotto[1] && Benutzer[2] == Lotto[2] && Benutzer[3] == Lotto[3] && Benutzer[4] == Lotto[4] && Benutzer[5] == Lotto[5])
		{
			System.out.println("Sie haben im Lotto gewonnen!!!");
		}
		else
		{
			System.out.println("Sie haben leider verloren!");
		}
	}

	private static void lottozahlen_ziehen(int[] Lotto, int lottozahl_nummer) // Zieht 6 Zufallszahlen / (leider auch noch doppelte)
	{
		int counter1;
		int counter2;
		for (counter1 = 0 ; counter1 != 6 ; counter1++)
		{
			Lotto[counter1] = (int)(Math.random()*49+1);
		}
		
		
		for (counter2 = 0 ; counter2 != 6 ; counter2++)
		{
			System.out.println("Lottozahl Nummer "+lottozahl_nummer+" ist: "+Lotto[counter2]);
			lottozahl_nummer++;
		}
	}

	private static void ausgabe_auswahl(int[] Benutzer) // gibt die getippten zahlen aus
	{
		int counter;
		for (counter = 0 ; counter != 6 ; counter++)
		{
			System.out.println("Ihre gewählten Lottozahlen sind: "+Benutzer[counter]);
		}		
		System.out.println("Lottozahlen werden gezogen.");
	}

	public static void eingeben(Scanner eingabe, int[] Benutzer) // Benutzer Zahlen tippen lassen
	{
		int counter;
		int gueltigkeit = 0;
		for (counter = 0 ; counter != 6 ; counter++)
		{
			System.out.println("Geben sie Ihre Lottozahlen ein: ");
			Benutzer[counter] = eingabe.nextInt();
			if (Benutzer[counter] <= 0 || Benutzer[counter] > 49) // prüft ob die Zahl zwischen 1 und 49 ist
			{
				System.out.println("Ihre Lottozahlen dürfen nicht <1 oder >49 sein!!!");
				counter--;
			}else {
				if (counter > 0)
				istGueltig (Benutzer, Benutzer[counter], counter - 1, gueltigkeit);
				if (gueltigkeit == 1)
				{
					System.out.println("Sie können nicht ein weiteres Mal auf diese Zahl setzen!");
					counter--;
				}
				else
				{
				}
			}
		};
	}

	private static int istGueltig(int[] Benutzer, int zahl, int counter, int gueltigkeit) // soll doppelte Zahlen erkennen
	{
		int i;
		for (i = 0 ; i != counter ; i++)
		{
			if (Benutzer[counter] == Benutzer[i])
			{
				gueltigkeit = gueltigkeit + 1;
			}
			else
			{
				gueltigkeit = 0;
			}
		}
		return gueltigkeit;
	}
}

Viel weiter kenn ich mich noch nicht aus, als Sachen in meinem Code stehen. ^^

MfG 280794
 
Eine Möglichkeit ist, dass Du von allen Lottozahlen noch ein Array anlegst, diesmal aber boolean und wenn eine Zahl gezogen wurde, setzt Du den Wert auf true, bei erneuter Eingabe überprüfst Du dieses Array und gibst eine Meldung aus, dass diese Zahl schon benutzt wurde.
 
Ich habe schon einige Zeit herumprobiert, kriege aber nicht hin, dass er doppelte Zahlen abweist. Also ich fänd es richtig nett wenn ihr mir dabei helfen könntet.

Naja, du ziehst eine Zahl und überprüfst ob die Zahl bei den gezogenen schon dabei ist. Wo genau ist da das Problem?

Als Tipp: Verwende eine while-Schleife, die so lange läuft bis 6 unterschiedliche Zahlen gezogen worden sind.
 
ich sehe den Fehler, aber wenn du ihn nicht selber findest hat doch Programmierung keinen Zweck,

kannst du mit Worten beschreiben was aktuell nicht funktioniert? sicherlich die Doppel-Prüfung,
aber was machst du dort, was ist dein Plan und wieso funktioniert er nicht?

wenn du nicht weißt woran es scheitert, warum schaust du nicht nach, loggst etwa mit System.out.println(),
was in der Methode istGueltig() passiert, welche Werte werden verglichen, was kommt für gueltigkeit am Ende raus?
usw.
 
Was mir noch nebenbei auffällt: Wie soll sein Main Programm später das Array kennen, wenn du er es nicht zurück gibt? Java ist doch immer Call by Value, also wird dein in der Main definiertes Array nie neue Zahlen erhalten, oder?
 
Hi,

ich habe hier ein kleines Lotto-Programm 😉
Vielleicht nicht das, was du willst, aber etwas (Aus einen Buch kopiert):

package Lotto;
import java.util.*;

public class Klass6
{
public static void main(String[] args)
{
// Startwerte, Lottozahlzahlenfeld
final int ANZAHL = 6; final int MAX = 49;
boolean[] Lottozahl = new boolean[MAX+1];
int[] Zufall = new int[ANZAHL+1];
// Alle Zahlen im "Lottozahlpott" auf "noch nicht gezogen"
for (int i = 1; i < Lottozahl.length; i++) Lottozahl = false;
// Sechs Zahlen "ziehen"
for (int Nr = 1; Nr < Zufall.length; Nr++)
{
// noch nicht verwendete Zufallszahl suchen
do
{
Zufall[Nr] = (int)(Math.random()*MAX)+1;
}
while (Lottozahl[Zufall[Nr]]);
// Benutzte Zahl als "gezogen" markieren
Lottozahl[Zufall[Nr]] = true;
// System.out.println (Nr + ". Ziehung: " + Zufall[Nr]);
}
// Sortieren und anzeigen
Arrays.sort (Zufall);
for (int Nr = 1; Nr < Zufall.length; Nr++)
System.out.println (Nr + ". Zahl: " + Zufall[Nr]);
}
}


Sag, wenn es dir geholfen hat

J-Star =)
 
ich habe hier ein kleines Lotto-Programm
Vielleicht nicht das, was du willst, aber etwas (Aus einen Buch kopiert):

Es hilft einem viel mehr wenn man es selbst macht, als irgendwelche Lösungen aus Büchern zu kopieren


Dieser dicke rote Hinweis ist dir immer noch nicht aufgefallen?

Java™ Quelltext ist bitte in [ JAVA]-Tags zu schreiben: [ JAVA]hier Java Code einfügen[/ JAVA]
 
Die einfachste Lösung für das Lotto-Problem ist, einfach keine doppelten Zahlen zu ziehen. Und das geht so:

- Lege eine Liste an, z.B. eine [c]ArrayList<Integer>[/c]
- Fülle die Liste mit den Zahlen von 1 bis 49
- Mische die Liste mit [c]java.util.Collections.shuffle[/c]
- Nimm die ersten 6 Zahlen der Liste
 
Es ging nicht um das Ziehen, sondern um die vom Benutzer eingegebenen, wenn ich das richtig verstanden habe.

Verwende ein Set und frage den Benutzer so lange nach Zahlen, bis sechs Stück drin sind.
 

Zurück
Oben