java.util.scanner - Scanner nextLine issue in Java -
java.util.scanner - Scanner nextLine issue in Java -
this question has reply here:
scanner issue when using nextline after nextxxx [duplicate]just 1 question: why must type answer = in.nextline(); twice? if line single programme doesn't work expected. without sec line programme doesn't inquire come in string.
public class main { public static void main(string[] args) { scanner in = new scanner(system.in); string reply = "yes"; while (answer.equals("yes")) { system.out.println("enter name , rating:"); string name = in.nextline(); int rating = 0; if (in.hasnextint()) { rating = in.nextint(); } else { system.out.println("error. exit."); return; } system.out.println("name: " + name); system.out.println("rating: " + rating); ects ects = new ects(); rating = ects.checkrating(rating); system.out.println("enter \"yes\" continue: "); reply = in.nextline(); reply = in.nextline(); } system.out.println("bye!"); in.close(); } }
the scanner-object has internal cache.
you start scannnextint(). you press key 1 you press key 2 you press return now, internal cache has 3 characters , scanner sees 3rd character(return) not number, nextint() homecoming integer 1st , 2nd character (1,2=12).
nextint() returns 12. unfortunately return still part of scanner's cache.
you phone call nextline(), method scans cache newline-marker has been kept in cache before nextint() phone call returned.
the nextline() returns 0-length-string.
nextline() has empty cache! wait until cache has been filled next newline-marker. reset() there more elegant way clear cache instead of using nextline():
in.reset(); java java.util.scanner
Comments
Post a Comment