eclipse - Java : Nesting an if/else statement inside a while loop -
this question has answer here:
this first question in stackoverflow, hope forgive me many possible error i'm going make in setting post.... problem following : code should generate random number, display user(in order me guess whitout making many attempts... should exercize), ask user guess number between 0 , 50, check if input integer or not and, if user guesses right number, print "yes, number is.." . but, if user digits letter or whatever not number, if/else loop goes crazy , program starts printing "choose number between 0 , 50: please insert number between 0 , 50, not letter" whitout stopping... can anywone me please?
package methods; import java.util.scanner; public class methods { static int randomnumber; static scanner userinput = new scanner(system.in); public static void main(string[] args) { system.out.println(getrandomnum()); int guessresult = 1; int randomguess = 0; while (guessresult != -1) { system.out.print("choose number between 0 , 50: "); if (userinput.hasnextint()) { randomguess = userinput.nextint(); guessresult = checkguess(randomguess); } else { system.out.println("please insert number, not letter"); } } system.out.println("yes, number " + randomguess); } public static int getrandomnum() { randomnumber = (int) (math.random() * 51); return randomnumber; } public static int checkguess(int guess) { if (guess == randomnumber) { return -1; } else { return guess; } } }
you allowing user enter letter (with intention giving error message, call scanner.nextint)
you should read input string, , parse it.
string input = null; while (guessresult != -1) { system.out.print("choose number between 0 , 50: "); input = sc.next(); try { randomguess = integer.parseint(input); checkguess(randomguess); } catch(numberformatexception ex) { system.out.println("please insert number, not letter"); } }
Comments
Post a Comment