无法修复java.lang.ArrayIndexOutOfBoundsException

时间:2014-12-22 13:32:19

标签: java arrays

我希望我能够很好地提出我的问题,因为我来自德国......:)

我有一个非常基本的java程序,但是当我启动它时,我得到一个java.lang.ArrayIndexOutOfBoundsException错误。我搜索了这个问题,但我找不到了:

Code.java

public class Code {
    private String code;
    private int nextStep;

    public Code() {
        nextStep = 0;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public void setNextStep(int lastStep) {
        this.nextStep = lastStep;
    }

    public String getActiveStepSeq() {
        String[] activeStepSeq = this.code.split(".");
        return(activeStepSeq[0]);
    }
}

Object.java

public class Being {
    public Code code;
    private String activeStepSeq;
    private String activeAction;

    public String I0;
    public String O0;
    public String S0;

    public Object(Code code) {
        this.code = code;
    }

    public void parseStep() {
        this.activeStepSeq = this.code.getActiveStepSeq();
        this.code.setNextStep(Integer.parseInt(this.activeStepSeq.split("~")[0]));
        this.activeAction = this.activeStepSeq.split("~")[1];
        switch(this.activeAction) {
        case("A"):
            this.O0 = this.I0;
            break;
        }
    }
}

Main.java

public class Main {
    public static void main(String[] args) {
        Code c = new Code();
        c.setCode("0~A.");
        Object o = new Object(c);
        o.I0 = "Test";
        o.parseStep();
        System.out.println(o.O0);
    }
}

应该这样工作:

  • 使用代码" 0~A。"
  • 创建新的代码c
  • 使用Code c
  • 创建新的Object o
  • " parseStep"得到字符串" 0~A"
  • 将nextStep设置为0并将o.O0设置为o.I0

但现在我收到以下错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at Code.getActiveStepSeq(Code.java:19)
    at Object.parseStep(Object.java:15)
    at Main.main(Main.java:7)

我不知道为什么我无法使用" activeStepSeq [0]" ...

我希望你能帮助我,问候Marvin

2 个答案:

答案 0 :(得分:6)

请注意String.split将正则表达式作为参数,.在正则表达式中具有特殊含义。

尝试

this.code.split("\\.")

答案 1 :(得分:2)

“”。 (dot)是正则表达式中使用的java中的特殊字符。您应该使用split方法将其转义为split,因为split需要使用正则表达式:

String[] activeStepSeq = this.code.split("\\.");