用空格键分割字符串

时间:2016-03-14 07:11:58

标签: java split spacebars

以下是我的java代码

我想输入:asd 123456 hellohello

输出:

ASD

123456

hellohello

然而它出来了错误。有人可以帮帮我吗?

包裹测试;

import java.util.Scanner;
public class test1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Scanner sc = new Scanner (System.in);
        String cs = sc.next();

        String[] output = cs.split("\\s+");
        System.out.println(output[0]);
        System.out.println(output[1]);
        System.out.println(output[2]);
    }
}

3 个答案:

答案 0 :(得分:2)

我已经修复了一些代码:

import java.util.Scanner;
public class SplitStringWithSpace {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        String cs = sc.nextLine();
        //close the open resource for memory efficiency
        sc.close();
        System.out.println(cs);

        String[] output = cs.split("\\s+");
        for (String retval : output) {
            System.out.println(retval);
        }
    }
}
  • 使用增强型for循环,因此您无需手动导航数组。
  • 使用后关闭资源。

答案 1 :(得分:0)

next()只返回输入中的下一个标记而不是整行,您的代码将抛出ArrayIndexOutOfBoundsException,因为它代表bcoz output的长度等于1。

您需要nextLine()方法来获取整行。

答案 2 :(得分:0)

此处sc.next()使用spaces分隔符。因此,如果输入为foo bar,则会得到:

sc.next(); //`foo`
sc.next(); //`bar`

您可以选择sc.nextLint()并使用其余代码。如果您必须继续使用sc.next(),则可以尝试使用此代码段。

while(sc.hasNext()) { //run until user press enter key
  System.out.println(sc.next());
}