我有一个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
我认为这个错误是不合理的。断言语句正确传递,.length=4
没有元素索引的数组如何3
?谁能告诉我为什么...
如注释中所述,这里的问题是您没有激活 JVM 选项中的断言
在命令行java MyProgram -ea
对于 Eclipse,请参阅此答案。
对于IntelliJ,请参阅此答案。
默认情况下,断言处于禁用状态,应使用以下任一命令行开关启用断言:
-ea
-enableassertions
您可以查看文档以获取更多包和子包更细粒度的激活。
对于参数或变量验证,您应该使用专用的断言库或简单地制作您的断言库。
一个轻量级和流畅的应该是valid4j:
//...
Assertive.ensure(tmp.length == 4, "The split result array must have 4 elements: (%d)", tmp.length);