Schere, Stein, Papier in Java, was mache ich falsch?
Ich soll ein S, S, P - Spiel in Java machen, wobei man quasi gegen das Programm spielt. Solange man sich für Stein entscheidet läuft auch alles ohne Probleme, allerdings funktioniert es nicht, wenn man Schere oder Papier nimmt. Eclipse liefert mir auch keine Fehlermeldung, nach der Eingabe meiner Wahl, passiert einfach nichts mehr. Irgendjemand der sich mit Java auskennt und weiss, wo mein Fehler liegt?
Danke im Voraus, unten findet ihr den Code.
package zufallsspiel;
import java.util.Random;
import java.util.Scanner;
public class Bonus2 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("Wie ist dein Name?");
String name = s.nextLine();
System.out.println("Nimmst du 1=Stein, 2=Papier oder 3=Schere?");
String wahl = s.nextLine();
int wahl2 = Integer.parseInt(wahl);
Random zufall = new Random();
int zufallszahl = zufall.nextInt(2+1) + 1;
if(wahl2 == 1) {
System.out.println("Du nimmst Stein");
if (zufallszahl == 1) {
System.out.println("Ich nehme Stein");
System.out.println("Unentschieden!");
}
if (zufallszahl == 2) {
System.out.println("Ich nehme Papier");
System.out.println("Ich gewinne!");
}
if (zufallszahl == 3) {
System.out.println("Ich nehme Schere");
System.out.println("Du gewinnst!");
}
else if(wahl2 == 2) {
System.out.println("Du nimmst Papier");
if (zufallszahl == 1) {
System.out.println("Ich nehme Stein");
System.out.println("Du gewinnst!");
}
if (zufallszahl == 2) {
System.out.println("Ich nehme Papier");
System.out.println("Unentschieden!");
}
if (zufallszahl == 3) {
System.out.println("Ich nehme Schere");
System.out.println("Ich gewinne!");
}
else {
System.out.println("Du nimmst Schere");
if (zufallszahl == 1) {
System.out.println("Ich nehme Stein");
System.out.println("Ich gewinne!");
}
if (zufallszahl == 2) {
System.out.println("Ich nehme Papier");
System.out.println("Du gewinnst!");
}
if (zufallszahl == 3) {
System.out.println("Ich nehme Schere");
System.out.println("Unentschieden!");
}
}
}}}}
Sorry für die Formatierung, die wurde erst nach dem abschicken der Frage so furchtbar.
3 Antworten
Wie wäre es mit einer Schleife?
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("Wie ist dein Name?");
String name = s.nextLine();
Random zufall = new Random();
while (true) {
System.out.println("Nimmst du 1=Stein, 2=Papier oder 3=Schere?");
String wahl = s.nextLine();
int wahl2 = Integer.parseInt(wahl);
int zufallszahl = zufall.nextInt(2 + 1) + 1;
System.out.print("Ich nehme ");
System.out.println(zufallszahl == 1 ? "Stein" : zufallszahl == 2 ? "Papier" : "Schere");
if (zufallszahl == wahl2)
System.out.println("Unentschieden!");
else {
if (zufallszahl < wahl2 || zufallszahl == 3 && wahl2 == 1)
System.out.println("Du hast gewonnen");
else
System.out.println("Du hast verloren");
break;
}
}
}
PS: Auch deine originale Formatierung ist falsch ;)
Zu viele Leerzeichen und die Einrückungen sind auch falsch
Update: Gewinnerkennung hat nicht ganz funktioniert ^^
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("Wie ist dein Name?");
String name = s.nextLine();
Random zufall = new Random();
while (true) {
System.out.println("Nimmst du 1=Stein, 2=Papier oder 3=Schere?");
String wahl = s.nextLine();
int wahl2 = Integer.parseInt(wahl);
int zufallszahl = zufall.nextInt(2 + 1) + 1;
System.out.println("Ich nehme " + (zufallszahl == 1 ? "Stein" : zufallszahl == 2 ? "Papier" : "Schere") + ", du nimmst " + (wahl2 == 1 ? "Stein" : wahl2 == 2 ? "Papier" : "Schere"));
if (zufallszahl == wahl2)
System.out.println("Unentschieden!");
else {
System.out.println("Du hast " + ((wahl2 - zufallszahl == 1 || zufallszahl == 3 && wahl2 == 1) ? "gewonnen" : "verloren"));
break;
}
}
}
Bei Dir sind fast alle fehlenden Klammern am Programmende angehängt.
if(wahl2 == 1) {
Du musst die schließende Klammer } setzen, bevor Du
else if(wahl2 == 2) {
behandelst.
Sonst gehört dieses else zum unmittelbar davor stehenden "if (zufallszahl == 3) {".
Kannst du das ganze bitte bei hastebin.com oder hatebin.com hochladen? So tuh ich mir das nicht an.