处理数组中的超出范围异常

时间:2014-07-19 21:18:54

标签: java

我的程序中出现错误是什么意思?

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at MultiCharacterDisplay.main(MultiCharacterDisplay.java:74)
Java Result: 1

这是我从

得到错误的代码
public void setText(String text) {
    if (text.length() > segmentDisplayCount) {
        text = text.substring(0, segmentDisplayCount);
    }

    int i = 0;
    for (char c: text.toCharArray()) {
        segmentDisplays.get(i++).setCharacter(c);
    }
}

public static void main(String[] args) {
    String text = args[1];
    MultiCharacterDisplay display = new MultiCharacterDisplay(text.length(), Color.GREEN);
    display.setText(text);
    JFrame frame = new JFrame();
    frame.setBackground(Color.black);
    frame.getContentPane().setBackground(Color.black);
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    frame.getContentPane().add(display);
    frame.pack();
    frame.setVisible(true);
}

在我运行之后,我得到了一个超出范围的例外,并且到目前为止我不确定,为什么,有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:0)

因为在运行程序时,您没有在命令行中传递至少两个参数。 args [1]中的1表示您发送两个参数,它们占用空格0和1。

正如@Elliot Frisch指出的那样,你为什么要跳过0号空间?如果你想以现在的方式运行它,你需要输入命令行Java MultiCharacterDisplay Test 1,其中test 1可以是你想要的任何东西,只要你有两个单词,所以它们占用空格0和1 in你的阵列。