命令行参数的ArrayIndexOutOfBoundsException

时间:2013-06-04 05:52:32

标签: java command-line-arguments indexoutofboundsexception

我有这段代码:

class CMD{
    public static void main(String[] s){
        String[] spt = s[0].split(".");
        System.out.println(spt[0]);
    }
}

要执行程序,我正在使用命令:

java CMD Test.java

我认为该程序应该打印Test,但我得到ArrayIndexOutOfBoundsException 为什么呢?

2 个答案:

答案 0 :(得分:5)

问题是你正在分裂“。”这意味着正则表达式中的“任何字符”。因此,虽然“任何字符”可以是分隔符,但您的分割不返回实际值。 (我很惊讶它不会返回一个空字符串或几个空字符串,但这是另一回事。)

如果你逃脱了“。”使用反斜杠(然后转义为字符串文字中的反斜杠)它可以工作:

String[] spt = s[0].split("\\.");

另一种(对于这个小程序而言非常类似,但在现实世界的应用程序中很有用)是使用Guava及其Splitter类:

Splitter splitter = Splitter.on('.');
Iterable<String> bits = splitter.split(s);
for (String bit : bits) {
    System.out.println(bit);
}

答案 1 :(得分:0)

使用以下内容即可得到答案。

java CMD“Test.java”