Java. Warum bekomme ich den Code nicht zum Laufen?

package textadventure;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class WoWtextadventure
{
 public static void main(String[] args) throws IOException
 {
  System.out.println("Hallo " + args[0] + ", willkommen in der World of Warcraft. Du befindest dich im Dorf Buxelknuxel.");
  System.out.println("Verwende die Tasten 'N', 'O', 'S' und 'W', um dich zu bewegen, und 'I', um einen Blick in dein Inventar zu werfen.");
  System.out.println("Mit 'Q' verlässt du das Spiel.");
  
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  String befehl;
  
  while ((befehl = br.readLine()) != null)
  {
   switch (befehl.toLowerCase())
   {
   case "n":
    System.out.println("Norden.");
    break;
   case "o":
    System.out.println("Osten.");
    break;
   case "s":
    System.out.println("Süden.");
    break;
   case "w":
    System.out.println("Westen.");
    break;
   case "q":
    System.out.println("Willst du wirklich aufgeben? Y/N");
    String bestaetigung = br.readLine();
    
    switch (bestaetigung.toLowerCase())
    {
    case "y":
     System.out.println("CU.");
     System.exit(0);
     break;
    case "n":
     System.out.println("Super.");
     break;
    }
    
    break;
   case "":
    System.out.println("Du machst nichts mache? Wirklich?");
    break;
   case "i":
    System.out.println("ein Holzschwert.");
    break;
   default:
    System.err.println("Das verstehe ich nicht.");
   }
  }
 }
}

Computer, Programmieren, Java, Programmierung, Code, Informatik
4 Antworten
Warum geht die switch-case-Anweisung nicht?
package amnestia;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Amnestia {
  public static void main(String[]args) throws IOException {
    System.out.println(" Verwende die Tasten A, W, S und D um dich frei zu bewegen \n" + "mit I öffnest du dein Inventar");
    System.out.println("Mit Q verlässt du das Spiel\n" + "viel Spaß!");

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String befehl;

    while ((befehl = br.readLine()) != null) {
      switch (befehl.toLowerCase()) {
        case "w":
          System.out.println("Du gehst nach Norden");
          break;
        case "D":
          System.out.println("Du gehst nach Westen");
          break;
        case "S":
          System.out.println("Du gehst nach Süden");
          break;
        case "A":
          System.out.println("Du gehst nach Westen");
          break;
        case "Q":
          System.out.println("Willst du das Spiel verlassen?Y/N");
          String bestaetigung = br.readLine();

          switch (bestaetigung.toLowerCase()) {
            case "Y":
              System.out.println("Tschüss");
              System.exit(0);
              break;
            case "N":
              System.out.println("Ok,  weiter geht!");
              break;
          }

          break;
        case "":
          System.out.println("Willst du nicht was machen?");
          break;
        case "I":
          System.out.println("Dein Inventar ist leer");
          break;
        default:
          System.err.print("Das verstehe ich nicht");
      }
    }
  }
}

Nach dem ersten Versuch W gibt er mir korrekt an: "Du gehst nach Norden". Bei jeder anderen Taste kommt aber: "Das verstehe ich nicht".

Wo ist denn mein Fehler?

lernen, Programmieren, Java, Intellij
4 Antworten

Was möchtest Du wissen?