无法修复java.lang.ArrayIndexOutOfBoundsException
我希望我能很好地表达我的问题,因为我来自德国……:) 我有一个非常基本的java程序,但当我启动它时,我得到一个java.lang.ArrayIndexOutOfBoundsException错误。我搜索了问题,但找不到: Code.java无法修复java.lang.ArrayIndexOutOfBoundsException,java,arrays,Java,Arrays,我希望我能很好地表达我的问题,因为我来自德国……:) 我有一个非常基本的java程序,但当我启动它时,我得到一个java.lang.ArrayIndexOutOfBoundsException错误。我搜索了问题,但找不到: Code.java public class Code { private String code; private int nextStep; public Code() { nextStep = 0; } pub
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
- 使用代码c创建新对象o
- 执行获取字符串“0~A”的“parseStep”
- 将下一步设置为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注意,
String.split
将正则表达式作为参数,
在正则表达式中有特殊的含义
试一试
“”(点)是java中用于正则表达式的特殊字符。您应该在split方法中转义它,因为split采用正则表达式,如:
String[] activeStepSeq = this.code.split("\\.");
谢谢这就是问题所在:)在代码类
返回此.code.split(“\\”)[0]的第19行插入此代码代码>
String[] activeStepSeq = this.code.split("\\.");