java - inputmismatch exception -


import java.util.*;  public class ngg {     static scanner numberentered;     static scanner userinput = new scanner(system.in);     static int guessednumber;     static int randomnumber = (int) (math.random()* 11);     static scanner reply;     static string answer;      public static void main(string[] args) {         guesschecker(guessednumber);     }      public static void guesschecker(int userguess) {         while (userguess != randomnumber) {             intro();             userguess = intchecker();             if (userguess == randomnumber) {                 system.out.println("congradulations!");             system.exit(0);                                  } else {                 system.out.println("that incorrect!");                 delay(1000);                 retrychecker(reply, answer);             }         }     }      public static int intchecker() {         try {             return userinput.nextint();          } catch (inputmismatchexception e) {             userinput.next();                    system.out.println("your answer invalid!");             delay(2000);             retrychecker(reply, answer);             return 0;         }     }      public static void retrychecker(scanner userreply, string userchoice) {         system.out.println("would try again?");         userreply = new scanner(system.in);         userchoice = userreply.nextline();          if (userchoice.equalsignorecase("yes") || userchoice.equalsignorecase("y")) {             guesschecker(guessednumber);             } else {             system.exit(0);         }     }      public static void intro() {         system.out.println("i'm thinking of number in head...");         delay(1000);         system.out.print("try guess it: ");     }      public static void delay(int millis) {         try {             thread.sleep(millis);         } catch (interruptedexception e) {}     }     } 

and here's problem:

enter image description here

i have number guessing game, every time says "try guess it:" let type in guess, unless previous guess string, letter or number, followed space , string, letter or number, instead of letting write own guess print out "your answer invalid" , move on program.

how fix this? userinput can string, letter or number, followed space , string, letter or number , it'll move 1 program normally.

the problem in intchecker().

public static int intchecker() {         try {             return userinput.nextint();          } catch (inputmismatchexception e) {             userinput.nextline(); // -> changed .next() nextline()                   system.out.println("your answer invalid!");             delay(2000);             retrychecker(reply, answer);             return 0;         }     } 

the reason when use next() returns string when encounters space or eof.

so when give input it's me!, first checks it's , says it's wrong. asks whether continue or not next. when press y goes method , reads remaining string me!.

here have used different scanners userinput , userreply. userinput static, object doesn't dies , has remaining string in me! after returning its.

so using nextline() returns whole string.

for more info on how both work, check out other answer

i hope helped.


Comments

Popular posts from this blog

account - Script error login visual studio DefaultLogin_PCore.js -

xcode - CocoaPod Storyboard error: -