【From】https://segmentfault.com/q/1010000003885362
-
Windows下,我们在键盘上按下
Enter
键,实际上输入的是回车和换行两个字符:13和10
-
默认情况下,
Scanner
获取到的输入里面是不包含回车换行的。比如你输入____one_two
,它只会从____one_two
里面获取输出(当然,可能要通过多次next()
来获取),自动把回车换行过滤掉了 -
但是当我们强制以回车或换行为分隔符时,它就不会自动过滤回车换行符了。比如你以回车符
____one_two
,这也就是返回的length
为12的原因。可以用下面的程序来验证,可以发现获取到的字符串的最后一个字符ASCII码为13,表示它是一个回车符
// 输入`____one_two `来测试 Scanner scanner = new Scanner(System.in); scanner.useDelimiter(" "); String str = scanner.next(); // 打印获取到的内容和其长度,以及最后一个字符的ASCII码 System.out.println(str + ":" + str.length() + " (" + str.codePointAt(str.length()-1) + ")");
解决方法:用
作为分隔符就正常了