Scanner.hasnext()循环无法结束
Scanner scanner=new Scanner(System.in);
while(scanner.hasNext()){
String a=scanner.next();
System.out.println(a);
}
方法一:
Ctrl+d 直接跳出循环
方法二:
使用重载hasnext(String patten)方法,设置终止符,比如下列就是以’#'为终止符,只要读到终止符就会退出循环。
Scanner scanner=new Scanner(System.in);
while(scanner.hasNext("#")){
String a=scanner.next();
System.out.println(a);
}
Scanner.nextLine被跳过
原因:
可能是前面有换行符没有读取,如下是因为next()没有读取完换行符’/n’导致nexLine方法被跳过。
Scanner scanner=new Scanner(System.in);
String s1=scanner.next();
System.out.println(s1);
String s2=scanner.nextLine();
System.out.println(s2);
System.out.println("结束");
nextLine方法被跳过了。
解决:
用scanner.nextLine()读取遗留下的换行符即可,如下:
Scanner scanner=new Scanner(System.in);
String s1=scanner.next();
System.out.println(s1);
//读取换行符
scanner.nextLine();
String s2=scanner.nextLine();
System.out.println(s2);
System.out.println("结束");