Hallo,
ich mache derzeit einen Onlinekurs für Java. Nun scheitere ich aber bereits bei den einfachsten Aufgaben.
Ich sollte ein Würfelspiel programmieren um die Random Funktionen kennen zu lernen.
Es wird nach einer Eingabe von 1 oder 2 gefragt.
Wenn 1 eingegeben wird, wird die Funktion 1 abgefahren, Wenn 2 eingegeben wird, wird die Funktion 2 abgefahren.
Nun will ich aber für den Fall einer anderen Eingabe als 1 oder 2 aber die Ausgabe "falschen Wert angegeben" produizeren.
Das habe ich leider nur falsch lösen können.
Hier wird zwar, bei bsp. einer Eingabe von 3, die Meldung "Fail" ausgegeben, doch wird nun natürlich der Schritt nicht wiederholt und das Programm läuft weiter.
Wie kann ich das lösen?
Ich hatte schon den Ansatz über eine while Schleife den Fail auszugeben, immer dann, wenn die Eingabe nicht 1 oder 2 ist. Das habe ich aber syntaktisch gar nicht erst hinbekommen.
Es sah so aus
Hat vielleicht jemand einen Tipp für mich??
ich mache derzeit einen Onlinekurs für Java. Nun scheitere ich aber bereits bei den einfachsten Aufgaben.
Ich sollte ein Würfelspiel programmieren um die Random Funktionen kennen zu lernen.
Es wird nach einer Eingabe von 1 oder 2 gefragt.
Wenn 1 eingegeben wird, wird die Funktion 1 abgefahren, Wenn 2 eingegeben wird, wird die Funktion 2 abgefahren.
Nun will ich aber für den Fall einer anderen Eingabe als 1 oder 2 aber die Ausgabe "falschen Wert angegeben" produizeren.
Das habe ich leider nur falsch lösen können.
Java:
import java.util.*;
class Wuerfelspiel
{
public static void main ( String[] args )
{
// Deklarieren und Initialisieren
final int ENDSTAND = 10;
Scanner scan = new Scanner( System.in );
Random rand = new Random();
int spielerscore = 0, computerscore = 0;
int spielerwurf = 0, computerwurf;
// Runden spielen, bis einer der Spieler den ENDSTAND erreicht hat
while ( spielerscore < ENDSTAND && computerscore < ENDSTAND )
{
// Computer wirft
computerwurf = rand.nextInt(6)+1 + rand.nextInt(6)+1 ;
System.out.println("Der Computer wirft: " + computerwurf);
// Spieler wirft
System.out.print("1 -> 11-seitiger Wuerfel | 2 -> 6-seitiger Wuerfel (1 oder 2)? ");
String wuerfeltyp = scan.nextLine();
if ( wuerfeltyp.equals("1") )//wenn 1 eingegeben wurde
{
spielerwurf = rand.nextInt(11)+2 ;
System.out.println("Sie werfen 1 Wuerfel und haben: " + spielerwurf );
}
else
if (wuerfeltyp.equals("2"))
{
spielerwurf=rand.nextInt(5)+1+rand.nextInt(5)+1;
System.out.println("Sie werfen 2 Wuerfel und haben: " + spielerwurf );
}
else
{ System.out.println("Fail");
}
// Gewinner der Runde bestimmen und den Score anpassen
if ( spielerwurf > computerwurf )
{
spielerscore = spielerscore + 1;
System.out.println("Sie haben die Runde gewonnen!");
}
else
{
computerscore = computerscore + 1;
System.out.println("Sie haben die Runde verloren!");
}
System.out.println("Score: Computer " + computerscore + ", Sie " + spielerscore + "\n");
}
// Gewinner des Spiels bestimmen
System.out.println("Endstand: Computer " + computerscore + ", Sie " + spielerscore);
if ( computerscore > spielerscore )
System.out.println("Der Computer hat das Spiel gewonnen!");
else
System.out.println("Sie haben das Spiel gewonnen!");
}}
Hier wird zwar, bei bsp. einer Eingabe von 3, die Meldung "Fail" ausgegeben, doch wird nun natürlich der Schritt nicht wiederholt und das Programm läuft weiter.
Wie kann ich das lösen?
Ich hatte schon den Ansatz über eine while Schleife den Fail auszugeben, immer dann, wenn die Eingabe nicht 1 oder 2 ist. Das habe ich aber syntaktisch gar nicht erst hinbekommen.
Es sah so aus
Java:
while (!wuerfeltyp.equals("1"|"2")
{
system.out.println("Fail")
}
Hat vielleicht jemand einen Tipp für mich??