2017-12-10 5 views
0

Ich bin ein Noob-Programmierer auf JAVA und ich versuche, eines meiner ersten Programme zu tun und unnötig zu sagen, es geht nicht gut. Ich habe mehrere Fehler des gleichen Typs wie dieser losgeworden, aber ich kann nicht in der Lage sein, das zu beheben. hier Ohne weitere Umschweife ist, was mit Ich brauche Hilfe:Was bedeutet java.util.InputMismatchException

Fehler:

Exception in thread "main" java.util.InputMismatchException 
at java.util.Scanner.throwFor(Unknown Source) 
at java.util.Scanner.next(Unknown Source) 
at java.util.Scanner.nextInt(Unknown Source) 
at java.util.Scanner.nextInt(Unknown Source) 
at Main.createGame(Main.java:67) 
at Main.processCommand(Main.java:116) 
at Main.main(Main.java:40)` 
`Exception in thread "main"` 

Code:

import java.util.Scanner; 

public class Main{

private static final String SAI = "SAI"; 
private static final String AJUDA = "AJUDA"; 
private static final String NOVO = "NOVO"; 
private static final String MAPA = "MAPA"; 
private static final String KNIGHT = "CAVALEIRO"; 
private static final String SWORDSMAN = "ESPADACHIM"; 
private static final String SPEARMAN = "LANCEIRO"; 
private static final String NORTH = "NORTE"; 
private static final String SOUTH = "SUL"; 
private static final String WEST = "OESTE"; 
private static final String EAST = "ESTE"; 
private static final String SAIR = "Obrigado por jogar. Ate a proxima."; 

public static void main(String[] args) 
    { 
      Scanner in = new Scanner(System.in); 

      Game g1 = new Game(); 

      Units u1 = new Units(); 

      String command = ""; 

      String movement = ""; 


     System.out.println("novo - Novo jogo"); 
     System.out.println("ajuda - Mostra a ajuda"); 
     System.out.println("sai - Termina a execucao do programa"); 
     System.out.print("> "); 

      while(!command.equals(SAI)) 
      { 
       command = readCommand(in); 
       movement = readMovement(in); 
       processCommand(command, movement, g1, u1, in); 
      } 

      in.close(); 
    } 

private static String readCommand(Scanner in) 
{ 
    String command; 

    command = in.next().toUpperCase(); 

    return command; 
} 

private static String readMovement(Scanner in) 
{ 
    String movement; 

    movement = in.next().toUpperCase(); 

    return movement; 
} 

private static void createGame(Game g1, Scanner in) 
{ 
    int x = in.nextInt(); 
    int y = in.nextInt(); 
    String team1 = in.next(); 
    int f1x = in.nextInt(); 
    int f1y = in.nextInt(); 
    String team2 = in.next(); 
    int f2x = in.nextInt(); 
    int f2y = in.nextInt(); 
    in.nextLine(); 
    g1.createGame(x, y, f1x, f1y, f2x, f2y, team1, team2); 
} 

private static void processCommand(String command, String movement, Game g1, Units u1, Scanner in) 
    { 
     int tempflag = 0; 

    switch (command) 
     { 
      case AJUDA: 
       if(g1.on() == false) 
       { 
       in.nextLine(); 
       System.out.println("novo - Novo jogo"); 
       System.out.println("ajuda - Mostra a ajuda"); 
       System.out.println("sai - Termina a execucao do programa"); 
       System.out.print("> "); 
       } 
       else 
       { 
        in.nextLine(); 
        System.out.println("novo - Novo jogo"); 
        System.out.println("mapa - Mostra o mapa do jogo"); 
        System.out.println("cavaleiro - Move o cavaleiro"); 
        System.out.println("espadachim - Move o espadachim"); 
        System.out.println("lanceiro - Move o lanceiro"); 
        System.out.println("ajuda - Mostra a ajuda"); 
        System.out.println("sai - Termina a execucao do programa"); 
        if((g1.turns()%2) == 0) 
        { 
         System.out.println(g1.Team1() + "> "); 
        } 
        else 
        { 
         System.out.println(g1.Team2() + "> "); 
        } 
       } 
       break; 

      case NOVO: 
        g1.stop(); 
        createGame(g1, in); 
        tempflag = (Math.abs(g1.flag1X() - g1.flag2X()) + Math.abs(g1.flag1Y() - g1.flag2Y())); 
        if(g1.altura() < 10 || g1.largura() < 10) 
        { 
         System.out.println("Mapa pequeno demais para o jogo"); 
        } 
        if(g1.flag1X() < 2 || g1.flag1Y() < 2) 
        { 
         System.out.println(g1.Team1() + " bandeira em posicao invalida " + g1.flag1X() + g1.flag1Y()); 
        } 
        if(g1.flag2X() < 2 || g1.flag2Y() < 2 || tempflag < 5) 
        { 
         System.out.printf(g1.Team2() + " bandeira em posicao invalida " + g1.flag2X() + g1.flag2Y()); 
        } 
        if(g1.Team1() == g1.Team2()) 
        { 
         System.out.println("As equipas nao podem ter o mesmo nome"); 
        } 
        else 
        { 
         g1.start(); 
         u1.knightAlive1(); 
         u1.swordsmanAlive1(); 
         u1.spearmanAlive1(); 
         u1.knightAlive2(); 
         u1.swordsmanAlive2(); 
         u1.spearmanAlive2(); 
         System.out.println("Jogo iniciado com sucesso, comeca a equipa " + g1.Team1()); 
         System.out.print(g1.Team1() + "> "); 
        } 
        break; 
+0

Hier haben Sie 'java.util.InputMismatchException' erhalten, es bedeutet, dass Ihre Eingabe falsch ist. Wie du eine Nummer erwartest, aber du hast eine eingegeben, war keine Nummer. Überprüfen Sie Ihre Eingabefolge. – janith1024

+0

InputMismatchException - wenn das nächste Token nicht mit dem regulären Integer-Ausdruck übereinstimmt oder außerhalb des Bereichs liegt. Geben Sie die Nummer oder etwas anderes ein? – Santosh

+0

[Wie viel Forschungsaufwand wird von Stack Overflow-Benutzern erwartet?] (Https://meta.stackoverflow.com/questions/261592/how-much-research-effort-is-expected-of-stack-overflow-users) Antwort "Viel. Ein absurder Betrag. Mehr als du denkst du bist fähig. Nachdem du das Ende deines Seils erreicht hast und der Schmerz, die Antwort nicht zu haben, die Menge an Scham übersteigt, die du erhältst, indem du deine Frage postest Wenn du weitermachen und fragen kannst, weil du zu diesem Zeitpunkt alles Notwendige getan hast, um eine gute Frage zu stellen! "* –

Antwort

-1

Sie sollten immer sicherstellen, dass Ihr Scanner Objekt hat den nextXXX (type) vor dem Aufruf versucht den d zu bekommen gewünschter Typ.

Ihr Stack-Trace ist sehr aussagekräftig, "at java.util.Scanner.nextInt (Unbekannte Quelle) " gibt an, dass es etwas anderes als den erwarteten Typ von int erhalten hat, als es versuchte zu lesen. Dies geschieht innerhalb Ihrer createGame() -Methode, die so aussieht, als würde sie aufgerufen, weil der Befehl "NOVO" übergeben wurde.

Um diesen Fehler zu vermeiden, verwenden Sie die scanners hasNextInt() -Methode, bevor Sie versuchen, das nächste int innerhalb des Streams zu erhalten. I.E if (hasNextInt()) {....}

+1

Es ist dumm, eine Corr downvote Antwort einfach nur, dass irgendwo anders die Frage auch beantwortet wurde. Wenn es bereits woanders beantwortet wird, dann erlaube keine Stimmen zu meiner Antwort, eine Abstimmungs-Stimme zeigt den Benutzern sichtbar (wer vielleicht nicht einmal die Antwort vollständig liest), dass die Antwort falsch ist. KEINE Duplizierung von etwas, das bereits beantwortet wurde. – javaBean007