一、next和nextline同时使用的问题
因为最近发现当输入两行语句的时候,如果next在上,nextline在下,就会导致输入异常,所以总结了一下next和nextline的区别
Scanner sc = new Scanner(System.in);
System.out.println("next输入");
String str1 = sc.next();
System.out.println("nextline输入");
String str2 = sc.nextLine();
System.out.println("str1:"+str1);
System.out.println("str2:"+str2);
//运行结果:
next输入
123
nextline输入
str1:123
str2:
可以发现next输入后,nextline输入直接被跳过去了
二、next和nextline
1.next
- API文档解释:查找并返回来自次扫描器的下一个完整标记
- 简单理解就是next只能识别一段完整的字符,遇到空格,回车等都会结束并返回值
2.nextline
- API文档解释: 此扫描器执行当前行,并返回跳过的输入信息
- 简单理解就是nextline会识别当前行的全部内容,遇到换行符才结束
三、异常原因及解决
知道了next和nextline的区别之后,导致异常的原因就很明显了,next只会读取字符内容,遗留下来的换行符被nextline读取到,所以直接结束了nextline的输入
解决方案:
解决方案就很简单啦,在要nextline上面再加一行nextline读取掉next留下来的换行符就好了
Scanner sc = new Scanner(System.in);
System.out.println("next输入");
String str1 = sc.next();
System.out.println("nextline输入");
sc.nextline();
String str2 = sc.nextLine();
System.out.println("str1:"+str1);
System.out.println("str2:"+str2);
//运行效果
next输入
123
nextline输入
123
str1:123
str2:123