falsche eingabe erkennen

domimako

Neues Mitglied
Hallo, wie würde ich es hinkriegen das eine falsche Eingabe erkennt wird und dann eine Nachricht wie "falsche Eingabe, bitte wähle eine gültige Option" kommt.
Danke im voraus
Java:
//Hauptklasse
public class Main{

    //Funtion für die Computer wahl
    public static String generateComputerChoice( Random  random){

        int wordNumber;
        //random zahl für die computer wahl
        wordNumber = random.nextInt( 5 ) + 1;
        String computerChoice = "";

        //random computer wahl
        if( wordNumber == 1 ){
            computerChoice = "stein";
        }else if( wordNumber == 2 ){
            computerChoice = "papier";
        }else if( wordNumber == 3 ){
            computerChoice = "schere";
        }else if( wordNumber == 4 ){
            computerChoice = "echse";
        }else if( wordNumber == 5 ){
            computerChoice = "spock";
        }

        System.out.println( "\nComputer hat seine Wahl getroffen" );
        return computerChoice;

    }

    //Function um alle optionen zu zeigen
    public static void showMenu(){

        System.out.println( "deine optionen :\n1.stein\n2.papier\n3.schere\n4.echse\n5.spock" );

    }

    //function für spieler wahl
    public static String getUserChoice( Scanner scanner ){

        String userWordChoice = "";
        System.out.print( "\nMache deine Wahl : " );
        System.out.print( "\nBitte alles klein schreiben :)  " );
        userWordChoice = scanner.nextLine();
        //Returning the user choice
        return userWordChoice;

    }

    //Function Ergebnis
    public static String chooseWinner( String computerChoice, String userChoice ){

        String winner = "kein gewinner";
        String customMessage = "unentschieden";
        String finalMessage = "";

        String rockCustomMessage1 = "stein schlägt schere";
        String rockCustomMessage2 = "Stein zerquetscht Echse";
     
        String scissorsCustomMessage1 = "Schere tötet Echse";
        String scissorsCustomMessage2 = "schere schneidet papier";
     
        String paperCustomMessage1 = "Papier umhüllt stein";
        String paperCustomMessage2 = "Papier widerlegt Spock";
     
        String EchseCostumMessage1 = "Echse frisst Papier";
        String EchseCostumMessage2 = "Echse vergiftet Spock";
     
        String SpockCostumMessage1 = "Spock pulverisiert Stein";
        String SpockCostumMessage2 = "Spock benutzt Schere";

        //gewinner Logik startet

        if( computerChoice.equals( "stein" ) && userChoice.equalsIgnoreCase( "schere" ) ){
            winner = "Computer";
            customMessage = rockCustomMessage1;
         
        }else if( userChoice.equalsIgnoreCase( "stein" ) && computerChoice.equals( "schere" ) ){
            winner = "Benutzer";
            customMessage = rockCustomMessage1;
         
        }else if( userChoice.equalsIgnoreCase( "stein" ) && computerChoice.equals( "echse" ) ){
            winner = "Benutzer";
            customMessage = rockCustomMessage2;
         
        }else if (computerChoice.equals( "stein" ) && userChoice.equalsIgnoreCase( "echse" ) ){
            winner = "Computer";
            customMessage = rockCustomMessage2;
         
        }

        if( computerChoice.equals( "schere" ) && userChoice.equalsIgnoreCase( "papier" ) ){
            winner = "Computer";
            customMessage = scissorsCustomMessage2;
         
        }else if( userChoice.equalsIgnoreCase( "schere" ) && computerChoice.equals( "papier" ) ){
            winner = "Benutzer";
            customMessage = scissorsCustomMessage2;
         
        }else if( userChoice.equalsIgnoreCase( "schere" ) && computerChoice.equals( "echse" ) ){
            winner = "Benutzer";
            customMessage = scissorsCustomMessage1;
         
        }else if( computerChoice.equals( "schere" ) && userChoice.equalsIgnoreCase( "echse" ) ){
            winner = "Computer";
            customMessage = scissorsCustomMessage1;
         
        }

        if( computerChoice.equals( "papier" ) && userChoice.equalsIgnoreCase( "stein" ) ){
            winner = "Computer";
            customMessage = paperCustomMessage1;
         
        }else if( userChoice.equalsIgnoreCase( "papier" ) && computerChoice.equals( "stein" ) ){
            winner = "Benutzer";
            customMessage = paperCustomMessage1;
         
        }else if( userChoice.equalsIgnoreCase( "papier" ) && computerChoice.equals( "spock" ) ){
            winner = "Benutzer";
            customMessage = paperCustomMessage2;
         
        }else if( computerChoice.equals( "papier" ) && userChoice.equalsIgnoreCase( "spock" ) ){
            winner = "Computer";
            customMessage = paperCustomMessage2;
         
        }

        if( computerChoice.equals( "echse" ) && userChoice.equalsIgnoreCase( "papier" ) ){
            winner = "Computer";
            customMessage = EchseCostumMessage1;
         
        }else if( userChoice.equalsIgnoreCase( "echse" ) && computerChoice.equals( "papier" ) ){
            winner = "Benutzer";
            customMessage = EchseCostumMessage1;
         
        }else if( userChoice.equalsIgnoreCase( "echse" ) && computerChoice.equals( "spock" ) ){
            winner = "Benutzer";
            customMessage = EchseCostumMessage2;
         
        }else if( computerChoice.equals( "echse" ) && userChoice.equalsIgnoreCase( "spock" ) ){
            winner = "Computer";
            customMessage = EchseCostumMessage2;
         
        }
     
         if( computerChoice.equals( "spock" ) && userChoice.equalsIgnoreCase( "stein" ) ){
            winner = "Computer";
            customMessage = SpockCostumMessage1;
         
        }else if( userChoice.equalsIgnoreCase( "spock" ) && computerChoice.equals( "stein" ) ){
            winner = "Benutzer";
            customMessage = SpockCostumMessage1;
         
        }else if( userChoice.equalsIgnoreCase( "spock" ) && computerChoice.equals( "schere" ) ){
            winner = "Benutzer";
            customMessage = SpockCostumMessage2;
         
        }else if( computerChoice.equals( "spock" ) && userChoice.equalsIgnoreCase( "schere" ) ){
            winner = "Computer";
            customMessage = SpockCostumMessage2;
         
        }
     
        //Gewinner Logik endet
        finalMessage = winner + " hat gewonnen ( " + customMessage + " )";

        //Finale message
        return finalMessage;

    }

    //Main function
    public static void main( String [] args ){

        while (true) {
        Random random = new Random();
        Scanner scanner = new Scanner(System.in);
        String computerChoice;
        String userChoice;
        String winner;

        showMenu();
        computerChoice = generateComputerChoice( random );
        userChoice = getUserChoice( scanner );
        winner = chooseWinner( computerChoice, userChoice );

        System.out.println( "\ndu wählst : " + userChoice + "\nComputer wählte : " +computerChoice );
        System.out.println( winner );
        System.out.println();
        System.out.println("------------------------------------------------------------");
        System.out.println();

    }

}
}
 
Nach der Eingabe des Users:
Java:
if (Bedingung für falsche Wahl) {
    // tu was du tun musst
}

Du musst dann halt im Weiteren darauf reagieren, wenn die userChoice nichts enthält.

Oder du packst die Eingabe in eine while-Schleife, die solange läuft, bis etwas gültiges eingegeben wurde.

EDIT: Es ist ggf. sinnvoll, diese Kontrolle in eine separate Methode auszulagern, dann kannst du etwas wie while(!gueltigeEingabe(eingabe)) { machen.
 
Zuletzt bearbeitet:
Hallo, wie würde ich es hinkriegen das eine falsche Eingabe erkennt wird und dann eine Nachricht wie "falsche Eingabe, bitte wähle eine gültige Option" kommt.
Hier ein Beispiel:
[CODE lang="java" highlight="21-35, 11"]import java.util.Scanner;

public class RoshamboStart {
private final static Scanner input = new Scanner(System.in);
private final static int EXIT = Roshambo.getNumValues() + 1;

public static void main(String[] args) {
RoshamboMatch match = welcomePlayer();
do {
showMenu();
int choose = inputInt("? ", 1, EXIT);
if (choose == EXIT)
break;
match.play(new Roshambo(choose - 1));
showResult(match);
} while (true);
System.out.println("Ende!");
}

private static int inputInt(String label, int min, int max) {
int value = 0;
boolean ok = false;
do {
try {
System.out.print(label + " >");
value = Integer.parseInt(input.next());
if (value < min || value > max)
System.out.println("Bitte nur Zahlen im Bereich von [" + min + "-" + max + "] eingeben!");
else
ok = true;
} catch (NumberFormatException e) {
System.out.println("Bitte nur ganze Zahlen eingeben!");
}
} while (!ok);
return value;
}

private static void showMenu() {
Roshambo.VALUE[] values = Roshambo.VALUE.values();
int size = values.length;
System.out.println("\no---------------o");
for (int i = 0; i < size; i++)
System.out.println("| " + (i + 1) + " -> " + values + "\t|");
System.out.println("| " + (size + 2) + " -> EXIT\t|");
System.out.println("o---------------o");
}

private static void showResult(RoshamboMatch match) {
System.out.println("-------------------------");
System.out.println(match);
System.out.println(match.getMatchString());
System.out.println("-------------------------\n");
}

private static RoshamboMatch welcomePlayer() {
System.out.println("\nWillkommen zu Schere, Stein, Papier, Echse Spock");
System.out.print("\nGeben sie ihren Namen ein ");
String name = input.next();
System.out.println("\nHallo " + name + " lass uns spielen!\n");
return new RoshamboMatch(name);
}
}
[/CODE]
[CODE lang="java" title="Roshambo"]import java.util.Random;

public class Roshambo implements Comparable<Roshambo> {
private final static Random rnd = new Random(System.currentTimeMillis());

public enum VALUE {
SCHERE, STEIN, PAPIER, ECHSE, SPOCK
}

public final VALUE value;

public Roshambo() {
this(getRandomValue());
}

public Roshambo(VALUE value) {
this.value = value;
}
public Roshambo(int id) {
this.value = idToValue(id);
}

@Override
public int compareTo(Roshambo o) {
if (value == o.value)
return 0;
switch (value) {
case ECHSE:
return o.value == VALUE.SPOCK || o.value == VALUE.PAPIER ? 1 : -1;
case PAPIER:
return o.value == VALUE.STEIN || o.value == VALUE.SPOCK ? 1 : -1;
case SCHERE:
return o.value == VALUE.ECHSE || o.value == VALUE.PAPIER ? 1 : -1;
case SPOCK:
return o.value == VALUE.SCHERE || o.value == VALUE.STEIN ? 1 : -1;
case STEIN:
}
return o.value == VALUE.ECHSE || o.value == VALUE.SCHERE ? 1 : -1;
}

public static int getNumValues() {
return VALUE.values().length;
}

public static VALUE getRandomValue() {
int id = rnd.nextInt(getNumValues());
return VALUE.values()[id];
}
public static VALUE idToValue(int id) throws IllegalArgumentException {
if( id < 0 || id >= getNumValues() )
throw new IllegalArgumentException("Id is not valid!");
return VALUE.values()[id];
}

@Override
public String toString() {
return value.toString();
}

}[/CODE]
[CODE lang="java" title="RoshamboMatch"]public class RoshamboMatch {
public final String name;
private Roshambo[] value = new Roshambo[2];
private int[] points = new int[value.length];
public final static int CPU = 0;
public final static int PLAYER = 1;
public final static int PUSH = 2;

public RoshamboMatch(String name) {
this.name = name;
}

public String getMatchString() {
if (value[0] == null)
return name + " hat nicht gespielt!";
String tmp = "[" + value[PLAYER] + "] <> [" + value[CPU] + "]" + System.lineSeparator();
int result = getResult();
if (result == PUSH)
return tmp + " Unentschieden!";
tmp += result == PLAYER ? " " + name + " gewinnt!" : " Computer gewinnt!";
return tmp;
}

private int getResult() {
int cmp = value[PLAYER].compareTo(value[CPU]);
if (cmp == 0)
return PUSH;
return cmp == 1 ? PLAYER : CPU;
}

public int play(Roshambo value) {
if (value == null)
throw new IllegalArgumentException("Null is not allowed");
this.value[CPU] = new Roshambo();
this.value[PLAYER] = value;
int result = getResult();
if (result == PUSH)
return PUSH;
if (result == CPU)
points[CPU]++;
else
points[PLAYER]++;
return result;
}

public void reset() {
for (int i = 0; i < value.length; i++) {
value = null;
points = 0;
}
}

@Override
public String toString() {
return " " + name + " (" + points[PLAYER] + ") <-> CPU (" + points[CPU] + ")";
}

}
[/CODE]
 

Zurück
Oben