我有一个由String
tmp
数组String[] tmp = line.split(",");
然后,
我在代码上获得了java.lang.ArrayIndexOutOfBoundsException: 3
assert tmp.length == 4;
int r = Integer.parseInt(tmp[3]); ----error line
代码上的和java.lang.ArrayIndexOutOfBoundsException: 2
assert tmp.length == 3;
String name = tmp[2]; -----error line
我不认为这个错误是合理的。 assert语句正确传递,.length=4
的数组如何没有元素索引3
?谁能告诉我为什么......
答案 0 :(得分:3)
如评论中所述,此处的问题是您没有激活JVM选项中的断言
在命令行cordova platform remove android
cordova platform add android
对于Eclipse,请参阅 this 回答。
对于IntelliJ,请参阅 this 回答。
答案 1 :(得分:2)
默认情况下,断言被禁用,您应该使用以下任一命令行开关启用它们:
-ea
-enableassertions
您可以查看the documentation以获取更多包和子包更细粒度的激活。
对于参数或变量验证,您应该使用专用的 Assertion 库或简单地制作您的。
轻量级且流畅的应该是valid4j:
//...
Assertive.ensure(tmp.length == 4, "The split result array must have 4 elements: (%d)", tmp.length);