大家好,欢迎来到IT知识分享网。
遇到一个有意思的东西,在整理字符串这块知识的时候,发现我在用Scanner函数时,在字符串中加入空格,结果空格后面的东西没有输出来(/尴尬),不多说直接上代码:
import java.util.Scanner;
//Scanner中nextLine()方法和next()方法的区别
public class ScannerString {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入字符串(nextLine):");
String str1 = input.nextLine();
System.out.println(str1);
System.out.println("请输入字符串(next):");
String str = input.next();
System.out.println(str);
}}
首先第一次测试:nextLine与next都没有空格:
这时的结果都是正确的。
第二次:nextLine与next都有空格:
这时的结果发现next只输出了“曹老板”后面的”很有钱”并没有输出。
第三次:我们将代码中next和nextLine的顺序调整一下,然后再进行测试:
import java.util.Scanner;
//Scanner中nextLine()方法和next()方法的区别
public class ScannerString {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入字符串(next):");
String str = input.next();
System.out.println(str);
System.out.println("请输入字符串(nextLine):");//曹老板很有钱
String str1 = input.nextLine();
System.out.println(str1);
}
}
这是调整好顺序的代码。
下面进行测试:
next与nextLine都没有空格:
哇,是不时发现什么了, 我还没有输入nextLine的字符串,它已经停掉了,
于是我查阅了Api文档
知道你们看不懂,解释一下:
Scanner是一个扫描器,我们录取到键盘的数据,先存到缓存区等待读取,它判断读取结束的标示是 空白符;比如空格,回车,tab 等等。
next()方法读取到空白符就结束l;
nextLine()读取到回车结束也就是“\r”;
所以没还顺序前测试的时候next()再检测的空格的时候就结束输出了。
修改顺序后遇到的问题就是因为next()读取到空白符前的数据时结束了,然后把回车“\r”留给了nextLine();所以上面nextLine()没有输出,不输出不代表没数据,是接到了空(回车“/r”)的数据。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/20999.html