Java 拆分方法正在拆分为单个字符串

Java 拆分方法正在拆分为单个字符串,java,string,split,java.util.scanner,Java,String,Split,Java.util.scanner,我有一个小问题: 我有一个程序,可以用空格分割字符串(只有一个ws),但是当我将该值赋给字符串数组时,它里面只有一个对象。(我只能打印“0”索引)。 代码如下: public void mainLoop() { Scanner sc = new Scanner(System.in); String parse = "#start"; while (!parse.equals("#stop") || !parse.isEmpty()) {

我有一个小问题: 我有一个程序,可以用空格分割字符串(只有一个ws),但是当我将该值赋给字符串数组时,它里面只有一个对象。(我只能打印“0”索引)。 代码如下:

public void mainLoop() {
        Scanner sc = new Scanner(System.in);

        String parse = "#start";

        while (!parse.equals("#stop") || !parse.isEmpty()) {
            parse = sc.next();

            String[] line = parse.split("[ ]");
            System.out.println(line[0]);
        }
}
通过方法“main”从实例调用“mainLoop”。

默认情况下
Scanner\next
使用空格分隔输入。您可以使用
nextLine
从扫描仪读取数据,而无需使用此分隔符模式

parse = sc.nextLine();
报告中提到的前几点仍然有效

while (!parse.equals("#stop") && !parse.isEmpty()) {
    parse = sc.nextLine();

    String[] line = parse.split("\\s");
    System.out.println(Arrays.toString(line));
}

如果你想用一个空格分开,为什么不这样做呢

String[] line = parse.split(" "); 

当您在扫描仪上调用
next
时,它将从输入返回下一个令牌。例如,如果用户将写入文本

foo bar
第一次调用
next
将返回
“foo”
,下一次调用
next
将返回
“bar”

可以考虑使用<代码> NeXLINE 而不是<代码>下< /COD>如果要在表单中获得字符串<代码>“Foobar”(整行).< /P>


此外,您不必在
[]
中放置空格,因此您可以使用
拆分(“[]”
或使用字符类
\s
,它表示空格
拆分(“\\s”)


另一个你似乎遇到的问题是

while( !condition1 || !condition2 )
如果您想说循环应该继续,直到满足任何一个条件,那么您应该将它们写在表单中

while( !(condition1 || condition2) )
或使用


用[]分隔一个空格似乎是有意的,不过:“我有一个程序可以用空格分隔一个字符串(只有一个ws)”尝试在
\s
上拆分,如下所示:
parse.split(\\s”)
模式应该可以工作。对于哪个输入
String
,这会给您带来问题吗?请您写一个
input
的例子,预期的
result
?@SeniorJD输入应该是:“你好,世界!”结果应该是:0:'hello'1:'world!'但我的结果是0:“你好\n世界!”(数字是数组中对象的索引)。@CODER即使您输入
#stop
而不是
|
操作符,您的程序也不会结束
while( !condition1 && !condition2 )