using string to break out of loop in java -
i break out of while true
loop if user enters in "stop" scanner. scanner takes in integers , believe problem lies. if try type in "stop" many errors saying "exception in thread main". here snippet of code:
public class algorithm { private scanner input = new scanner(system.in); int n; while (true){ system.out.println("eneter number check if odd or even, hit enter: "); system.out.println("type 'stop' end program"); n = input.nextint(); string strn = string.valueof(n); //convert integer string if (new string(strn).equals("stop")){ //if string stop, breaks system.out.println("thanks using program"); break; } if (n % 2 == 0){ system.out.println(n+" even"); continue; } else{ system.out.println(n+" odd"); continue;
i know missing closing curly braces rest assured there in actual code. thanks.
here error getting: exception in thread "main" java.util.inputmismatchexception @ java.util.scanner.throwfor(scanner.java:864) @ java.util.scanner.next(scanner.java:1485) @ java.util.scanner.nextint(scanner.java:2117) @ java.util.scanner.nextint(scanner.java:2076) @ oddoreven.algorithm.checker(algorithm.java:13) @ oddoreven.main.main(main.java:7)
you've identified problem - scanner reads integers:
int n; ... n = input.nextint();
so it's impossible variable n
(an int) contain string "stop" (and scanner throws exception anyway when call nextint()
encounters string, such "stop", cannot convert int).
to this, need read strings input (probably using scanner.nextline()
), check whether "stop", , if not, attempt convert them ints using like:
int n = integer.parseint(mystring)
to handle garbage input (neither stop nor integer), wrap parseint
line in try-catch
block can detect when input garbage catching exception
try { int = integer.parseint(mystring); // int } catch (numberformatexception e) { // display warning message user instead }
see related question.
Comments
Post a Comment