Anzeige

 Schere Stein Papier (Hilfe!)


#1
Brauche Hilfe!

Hallo Leute,

ich lerne seit einer Woche Java und versuche Schere Stein Papier zu programmieren.
Das Problem ist das wenn ich den code ausführe, ich etwas eingeben kann aber dann nichts zurück bekommen.

Mein spiel soll aber Wörter lesen können. also damit meine ich das ich Schere, Stein oder Papier eingeben kann und es nicht wie die meisten es mit Zahlen mache.

Bitte schnell um eine lösung

Hier ist mein

Java:
import java.util.Scanner;
import java.util.Random;

public class SSP {

    public static void main(String[] args){
        String Wahl_spieler;
        int punkte = 0;
        int Runden = 0;

       
        System.out.println("Schere Stein Papier \n");
        System.out.println("Such dir eine Wahl aus");
       
        Random zG = new Random(); //
       String[] auswahl = new String[1];
        String[] auswahl2 = new String[]{"Schere", "Stein", "Papier"};
       
       
            for(int a = 0; a < auswahl.length; a++){
               
                auswahl [a] = auswahl2[zG.nextInt (1) % auswahl2.length]; // Zufallauswahl
                }
       
        while(Runden < 12){
               
            Scanner spieler_auswahl = new Scanner(System.in);
            Wahl_spieler = spieler_auswahl.nextLine();
           
           
            if(auswahl.equals(Wahl_spieler)){
                System.out.println("Unetntschieden");
                Runden++;
            }
            // schere vergleich
            if(auswahl.equals("Schere") && Wahl_spieler == "Stein" ){
                System.out.println("Du hast gewonnen");
                Runden++;
            }
           
            if(auswahl.equals("Schere") && Wahl_spieler == "Papier"){
                System.out.println("Computer hat gewonnen");
                Runden++;
            }
           
            //Vergleich Stein
            if(auswahl.equals("Stein") && Wahl_spieler == "Schere"){
                System.out.println("Computer hat gewonnen");
                Runden++;
            }
            if(auswahl.equals("Stein") && Wahl_spieler == "Papier"){
                System.out.println("Du hast Gewonnen");
                Runden++;
            }
           
            // Vergleich Papier
            if(auswahl.equals("Papier") && Wahl_spieler == "Stein"){
                System.out.println("Du Verlierste");
                Runden++;
            }
            if(auswahl.equals("Papier") && Wahl_spieler == "Schere"){
                System.out.println("Du Gewinnst");
                Runden++;
            }
        }
    }
}

[/ code]
 

vfl_freak

Premium-User
#2
Moin,

was mir so auf die Schnelle auffällt:
Java:
String[] auswahl = new String[1];
ein String-Array der Länge '1' ??? Warum nimmst Du hier nicht einfach 'String' (s. u.) ???

Java:
for( int a = 0; a < auswahl.length; a++ ){
So gesehen ist diese for-Schleife auch überflüssig, da ja 'auswahl' stets die Länge '1' hat !

Java:
if( auswahl.equals( ...) ){
Wird so nicht compilieren!
Wenn Du schon ein Array benutzt, dann musst Du es auch entsprechend ansprechen!!
In Deinem Fall also:
Java:
if( auswahl[0].equals( ...) ){
Oder Du nimmst halt eine normale Stringvariable, dann wäre Dein Vergleich ok (s. o.) !

Dann noch ein Satz zur while-Schleife:
Java:
while( Runden < 12 )
Ist so auch relativ witzlos, da die Computerauswahl VOR der Schleife erfolgt, also während der 12 Runden stets die Gleiche ist !!

VG Klaus
 

HonniCilest

Erfahrenes Mitglied
#4
Mir ist außerdem ins Auge gefallen, dass du String nicht mit equals vergleichst. Bitte equals verwenden. Weiterhin wäre es super, dich bei der Benamung auch an die "Regeln" zu halten, sprich Variablen nicht mit einem großen Buchstaben beginnen lassen.

Java:
Wahl_spieler == "Papier" // falsch
wahl_spieler.equals("Papier") // richtig

Hinweise ansonsten noch von mir:
1) Wieso machst du in jedem Zweig ein Runden++? Einmal nach dem Konstrukt reicht, also an einer Codestelle, den alle Fälle erreichen.
2) Die if-Anweisungen sind im Rahmen von deinem Schwere-Stein Papier noch vertretbar. Bei größeren Applikationen werden solche Konstrukte aber schnell zur Tortur. Stell dir vor du hast mehr Symbole a la TBBT. Falls es sich in deinem Fall um ein Selbststudium handelt kannst du auch versuchen mit Graphen / StateMachine umzusetzen, etwas overseized für dein kleines Progrämmchen aber gut zum Lernen.
 
Anzeige

Neue Beiträge

Anzeige