如何使用Scanner拆分空格作为分隔符的字符串

Zac*_*ack 4 java java.util.scanner

我试图根据单词之间的空格分割输入句子.它没有按预期工作.

public static void main(String[] args) {
    Scanner scaninput=new Scanner(System.in);
    String inputSentence = scaninput.next();
    String[] result=inputSentence.split("-");
    // for(String iter:result) {
    //     System.out.println("iter:"+iter);
    // }
    System.out.println("result.length: "+result.length);
    for (int count=0;count<result.length;count++) {
        System.out.println("==");
        System.out.println(result[count]);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在split中使用" - "时,它给出了下面的输出:

fsfdsfsd-second-third
result.length: 3
==
fsfdsfsd
==
second
==
third
Run Code Online (Sandbox Code Playgroud)

当我用空格""替换" - "时,它给出了下面的输出.

first second third
result.length: 1
==
first
Run Code Online (Sandbox Code Playgroud)

关于这里有什么问题的任何建议?我已经提到了stackoverflow post 如何按空格分割字符串,但它不起作用.

使用split("\\s+")提供此输出:

first second third
result.length: 1
==
first
Run Code Online (Sandbox Code Playgroud)

Boh*_*ian 9

更改

scanner.next()
Run Code Online (Sandbox Code Playgroud)

scanner.nextLine()
Run Code Online (Sandbox Code Playgroud)

来自javadoc

扫描程序使用分隔符模式将其输入分解为标记,分隔符模式默认匹配空格.

调用next()返回下一个单词.
调用nextLine()返回下一.


Hoo*_*pje 7

已经在空格上拆分字符串的next()方法Scanner,也就是说,它返回下一个标记,字符串直到下一个字符串.因此,如果添加适当的println,您将看到它inputSentence等于第一个单词,而不是整个字符串.

替换scanInput.next()scanInput.nextLine().