无法获取变量中的单词数

MJ9*_*J93 1 java

我可以成功计算短语中的单词数量,如:

int numWords = "I am testing".split(" ").length;
Run Code Online (Sandbox Code Playgroud)

(它返回3.)

但是,我得到一个用户输入并将其存储在一个字符串中,然后尝试计算其中的单词数,但它总是返回1,无论如何.

我正在stringVariable = scanner.next();使用和使用用户输入

int numWords = stringVariable.split(" ").length;
Run Code Online (Sandbox Code Playgroud)

获得单词数量.假设我输入"我正在测试".它会返回1.这是为什么?

AHu*_*ist 10

下一个():

查找并返回此扫描程序中的下一个完整令牌.在完成令牌之前和之后是与分隔符模式匹配的输入.即使之前的hasNext()调用返回true,此方法也可能在等待输入扫描时阻塞.

默认分隔符是空格,因此您只读取第一个单词.因此,它只会是一个字.尝试使用hasNext()(具有某种类型的终止条件)读取循环中的所有用户输入,或使用nextLine()读取整行的值.


Bri*_*ach 5

因为scanner.next()在空白上进行标记.

scanner.nextLine() 另一方面,你会做你想要的.

public static void main(String[] args) {

    String input = "I am testing";
    Scanner s = new Scanner(input);
    String stringVariable = s.next();
    System.out.println(stringVariable);
    int numWords = stringVariable.split(" ").length;
    System.out.println(numWords);


    s = new Scanner(input);
    stringVariable = s.nextLine();
    System.out.println(stringVariable);
    numWords = stringVariable.split(" ").length;
    System.out.println(numWords);


}
Run Code Online (Sandbox Code Playgroud)

输出:


1
我正在测试
3