Split方法正在拆分为单个String

时间:2014-08-13 12:52:59

标签: java string split java.util.scanner

我有一点问题: 我有一个程序,用空格分割一个字符串(只有单个ws),但是当我将该值赋给String数组时,它只有一个对象。 (我只能打印' 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]);
        }
}

' mainLoop'通过方法' main'来实例调用。

3 个答案:

答案 0 :(得分:2)

默认情况下Scanner#next使用空格分隔输入。您可以使用nextLine从扫描仪读取而不使用此分隔符模式

parse = sc.nextLine();

comments中提到的前几点仍然有效

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

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

答案 1 :(得分:0)

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

foo bar

next的第一次通话将返回"foo"next的下一次通话将返回"bar"

如果您希望以nextLine形式获取字符串(整行),可以考虑使用next代替"foo bar"


此外,您不必在[]中放置空格,因此您可以使用split("[ ]")代替split(" "),或使用代表空格的\s split("\\s") while( !condition1 || !condition2 ) 1}}。


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

while( !(condition1 || condition2) )

如果您想说循环应该继续,直到满足任一条件,那么您应该以表格形式写出

while( !condition1 && !condition2 )

或使用De Morgan's laws

{{1}}

答案 2 :(得分:-1)

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

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