Java 无法获取变量中的字数

Java 无法获取变量中的字数,java,Java,我可以成功计算短语中的字数,如: int numWords = "I am testing".split(" ").length; (返回3。) 然而,我得到一个用户输入并将其存储在一个字符串中,然后尝试计算其中的字数,但无论发生什么情况,它总是返回1 我使用stringVariable=scanner.next()获取用户输入和使用 int numWords = stringVariable.split(" ").length; 获取字数。假设我输入“我正在测试”。它将返回1。为什么会这样

我可以成功计算短语中的字数,如:

int numWords = "I am testing".split(" ").length;
(返回3。)

然而,我得到一个用户输入并将其存储在一个字符串中,然后尝试计算其中的字数,但无论发生什么情况,它总是返回1

我使用
stringVariable=scanner.next()获取用户输入和使用

int numWords = stringVariable.split(" ").length;
获取字数。假设我输入“我正在测试”。它将返回1。为什么会这样?

下一步()

查找并返回此扫描程序中的下一个完整令牌。A. 完整标记的前面和后面是与 分隔符模式。此方法在等待输入时可能会阻塞 扫描,即使上一次调用hasNext()返回true

默认分隔符是空白,因此您只能读取第一个单词。因此,它将永远只是一个词。尝试使用hasNext()读取循环中的所有用户输入(使用某种类型的终止条件),或使用nextLine()读取整行内容。

next():

查找并返回此扫描程序中的下一个完整令牌。A. 完整标记的前面和后面是与 分隔符模式。此方法在等待输入时可能会阻塞 扫描,即使上一次调用hasNext()返回true

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

我相信next()会在空白处停止,因此它只能得到“I”。尝试使用scanner.nextLine()。

我相信next()会在空白处停止,所以它只能得到“I”。尝试使用scanner.nextLine()。

,因为
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);


}
输出:


1
我正在测试
3

因为
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);


}
输出:


1
我正在测试
3

这将始终返回一,因为next()在到达空白处时停止。使用其中一个 它会帮助你的

scanner.nextLine()
or
scanner.hasNext();
在循环中读取所有标记

这将始终返回一,因为next()在到达空白处时停止。使用其中一个 它会帮助你的

scanner.nextLine()
or
scanner.hasNext();
在循环中读取所有标记