java中的Length方法,在输入字符串上使用时不会产生预期的结果
我的初始代码未产生预期结果:
import java.util.Scanner;
class Strings {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter your word: ");
String word1 = sc.next();
System.out.println(word1.length());
sc.close();
}
}
输出:
tk@localhost:~$ java Strings
Enter your word:
avada kedavra
5
这不是我绳子的长度。 但当我尝试此操作时(没有用户输入):
class Strings {
public static void main(String[] args) {
String str = new String("avada kedavra");
System.out.println(str.length());
}
}
输出:
tk@localhost:~$ java Strings
13
它起作用了! 那么,当我从用户那里获取输入时,为什么它不起作用呢?我错过了什么
# 1 楼答案
简而言之:RTFM
对于click lazy:Scanner在调用
next
时返回“下一个令牌”。令牌是通过采用一种模式计算的,默认情况下为“所有空白”。所以你调用next返回下一个单词,而不是你想要的完整行在实例化
Scanner
或调用nextLine
时设置一个拟合模式# 2 楼答案
默认情况下,^{} 查找并返回下一个完整的标记。默认情况下,标记是一个单词,用空格或换行符(
\p{javaWhitespace}+
)分隔在第一个例子中,
word1 = "avada"
,长度为5使用
sc.nextLine()
获得完整的行