Kleines Frage - Antwort Programm (Anfänger)

Koookie

Neues Mitglied
Guten Tag! :3 Ich habe mich eigentlich nur für diese Frage hier angemeldet und hoffe ich mache nichts falsch xD
Also, ich schreibe erst seit kurzem ein paar Java - Programme und ich wollte unbedingt eins schreiben, bei welchem man seine Antwort eingibt und das Programm darauf reagiert... Mein Problem ist, dass ein paar Antworten erkannt werden sollen (wie, mir geht es gut oder mir geht es schlecht) aber alle die nicht darunter fallen, sollen die selbe Antwort erhalten, nämlich "Damit habe ich nicht gerechnet". Könntet ihr mir helfen? So habe ich versucht es umzusetzen, aber wenn ich "gut" eingebe kommt immer noch "Damit habe ich nicht gerechnet" :c
Ich kenne bis jetzt nur while, for und if/else Schleife, geht das damit?
Vielen dank für eure Hilfe und tut mir leid für den langen Post ;-;

import java.util.Scanner;
public class WannaTalk{
public static void main(String[] Agrs){
Scanner s = new Scanner(System.in);

System.out.println("Hallo :3 Wie geht es dir?");
System.out.println("Bitte antworte immer nur mit einem Wort >-<");
System.out.print("Mir geht es ");
String a = s.nextLine();

if (a.equals("akzeptabel")) {
System.out.print("Ist das jetzt gut oder schlecht? =-=");
} // end of if
else {
System.out.println("Damit habe ich nicht gerechnet...");
}
while (a.equals("gut")) {
System.out.println("Oh das freut mich! Hab weiter einen wunderschönen Tag! 🙂");
break;
} // end of while
while (a.equals("schlecht")){
System.out.println("Oh nein... Lass den Kopf nicht hängen :c");
break;
} // end of while
while (a.equals("okay")) {
System.out.println("OKAY?? O.O Komische Antwort .-.");
break;
} // end of while

}
}
 
for, while und auch do-while Schleifen sollte man nur benutzen, wenn man eine Aktion (der Code innerhalb des Schleifenrumpfes) auch mehrmals ausführen möchte. Eine Schleife sollte man nicht dazu mißbrauchen, eine Aktion einmal auszuführen, indem man bei erfolgreicher Bedingung der Schleife und einmaliger Ausführung des Schleifenrumpfes dann gleich per break; unbedingt aus der Schleife rausspringt. Dafür gibt es die if-Anweisung (es heißt nicht "if-Schleife", da die if-Anweisung ja keine Schleife ist, da sie keine wiederholte Ausführung von etwas ermöglicht).
Als Beispiel, wie es gehen könnte:
Java:
import java.util.Scanner;
public class WannaTalk {
  public static void main(String[] args) {
    System.out.println("Hallo :3 Wie geht es dir?");
    System.out.println("Bitte antworte immer nur mit einem Wort >-<");
    System.out.print("Mir geht es ");
    Scanner s = new Scanner(System.in);
    String eingabe = s.nextLine();
    String antwort;
    if (eingabe.equals("akzeptabel")) {
      antwort = "Ist das jetzt gut oder schlecht? =-=";
    } else if (eingabe.equals("gut")) {
      antwort = "Oh das freut mich! Hab weiter einen wunderschönen Tag! :)";
    } else if (eingabe.equals("schlecht")) {
      antwort = "Oh nein... Lass den Kopf nicht hängen :c";
    } else if (eingabe.equals("okay")) {
      antwort = "OKAY?? O.O Komische Antwort .-.";
    } else {
      antwort = "Damit habe ich nicht gerechnet...";
    }
    System.out.println(antwort);
  }
}
 
Ich weiß du fängst gerade erst an, aber für diesen speziellen Fall wäre eine Map eigentlich geeigneter.

Java:
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class WannaTalk {
    private static final Map<String, String> REAKTIONEN;
    static {
        REAKTIONEN = new HashMap<>();
       
       
        REAKTIONEN.put("akzeptabel", "Ist das jetzt gut oder schlecht? =-=");
        REAKTIONEN.put("gut", "Oh das freut mich! Hab weiter einen wunderschönen Tag! :)");
        REAKTIONEN.put("schlecht", "Oh nein... Lass den Kopf nicht hängen :c");
        REAKTIONEN.put("okay", "OKAY?? O.O Komische Antwort .-.");
    }

    public static void main(String[] args) {
        System.out.println("Hallo :3 Wie geht es dir?");
        System.out.println("Bitte antworte immer nur mit einem Wort >-<");
        System.out.print("Mir geht es ");
       
        Scanner s = new Scanner(System.in);
        String eingabe = s.nextLine();
       
        String reaktion = REAKTIONEN.get(eingabe);
       
        System.out.println(reaktion != null
            ? reaktion : "Damit habe ich nicht gerechnet...");
    }
}
 
Mit switch und Case würde es ungefähr so aussehen🙂

Java:
public static void main(String[]args) {
       
            String answer = "";
            String result = "";
            Scanner sc = new Scanner(System.in);
           
            System.out.println("Wie lautet dein Lieblingsanime?");
            while(!answer.equals("nein")) {
                answer = sc.nextLine();               
                switch(answer) {
                case "stop" : result = answer; break;
                case "Tokyo Ghoul" : result = answer + " ist eine gute Wahl."; break;
                case "School Days" : result = answer + " ist ein ganz mieser Anime."; break;
                case "Code Geass" : result = answer + " ist einer der besten Animes die es jemals gab."; break;
                default : result = "Dieser Anime ist mir leider nicht bekannt, versuche es erneut."; break;
                }
                if(!answer.equals("nein")) {
                    System.out.println(result);
                    System.out.println("Nenne mir doch bitte noch eine Serie: ");
                }
            }
    }
 

Zurück
Oben