Java 索引0无效,大小为0。无法添加到arrayList
我有这个密码Java 索引0无效,大小为0。无法添加到arrayList,java,android,arraylist,Java,Android,Arraylist,我有这个密码 ArrayList<File> internalPaths = new ArrayList<File>(); ArrayList<File> externalPaths = new ArrayList<File>(); for (int i = 0; i < pathCounter; i++) { Log.e("PK", Integer.toString(pathCounter)); if (i == 0)
ArrayList<File> internalPaths = new ArrayList<File>();
ArrayList<File> externalPaths = new ArrayList<File>();
for (int i = 0; i < pathCounter; i++) {
Log.e("PK", Integer.toString(pathCounter));
if (i == 0) {
// first path
String path = pathString.substring(commaPositions[i],
commaPositions[i + 1] + 1);
if (path.length() > 7 && path.substring(0,8).contains("storage")) {
externalPaths.add(new File(path));
} else {
internalPaths.add(new File(path));
}
}
}
除此之外:
索引0无效,大小为0
我想知道这是怎么可能的,因为我对添加到外部路径
没有问题,但是对于内部路径
,存在此错误
if (path.length() > 7
&& path.substring(0,8).contains("storage")) {
子字符串索引0,8可能导致短于8个字符的字符串出现问题。此外,您可能需要处理空字符串大小写
这完全是失败的一部分
InternalPaths是一个已初始化的ArrayList(不是NullPointerException),它的
add
方法应该在数组末尾追加一个项,而不是将它放在特定的位置(索引位置)。因此,问题应该在文件的构造函数中。调试并检查路径的值。我打赌这是一个空字符串。找出如何将其初始化为这样的值。如何声明通信???您确定您的代码是最新的吗。您能识别出故障的精确线路而不是阻塞线路吗?对不起,已编辑。现在更清楚了。我唯一想到的是文件构造函数不喜欢你的路径。。。能否检查path变量在此处实际包含的内容?是否使用断点进行调试?调用substring()
不会对长度为7的字符串造成任何问题,因为第二个参数是独占的。
if (path.length() > 7
&& path.substring(0,8).contains("storage")) {
else {
internalPaths.add(new File(path));
}