我想将字符串数组中的值存储到另一个字符串数组中。但是我用下面的代码得到“NullPointerException”错误。 “imagesSelected”是一个存储有值的字符串数组。但是当我想在子字符串后将其移动到另一个字符串数组时,我得到错误。我相信是因为最后一行代码。我不知道如何让它发挥作用。
String[] imageLocation;
if(imagesSelected.length >0){
for(int i=0;i<imagesSelected.length;i++){
int start = imagesSelected[i].indexOf("WB/");
imageLocation[i] = imagesSelected[i].substring(start + 3);
}
}
答案 0 :(得分:5)
你需要做这样的事情:
String[] imageLocation = new String[imagesSelected.length];
否则imageLocation
将为null
。
顺便说一下,你的循环周围不需要if
。它完全是冗余的,因为它将与循环开始时使用的逻辑相同。
答案 1 :(得分:4)
imageLocation [I]
你初始化了imageLocation吗?
我相信这个错误是因为你试图指向字符串数组中不存在的位置。 imageLocation [0,1,2,3 ...等]还不存在,因为字符串数组尚未初始化。
尝试String [] imageLocation [无论多长时间你想要数组]
答案 2 :(得分:2)
您必须为imageLocation分配内存。
imageLocation = new String[LENGTH];
答案 3 :(得分:1)
您的最终解决方案代码应如下所示,否则编译器会向您显示imageLocation
未初始化的错误
String[] imageLocation = new String[imagesSelected != null ? imagesSelected.length : 0];
if (imagesSelected.length > 0) {
for (int i = 0; i < imagesSelected.length; i++) {
int start = imagesSelected[i].indexOf("WB/");
imageLocation[i] = imagesSelected[i].substring(start + 3);
}
}
答案 4 :(得分:1)
看看这段代码
String[] imageLocation;
if(imagesSelected.length >0){
imageLocation = new String[imageSelected.length];
for(int i=0;i<imagesSelected.length;i++){
int start = imagesSelected[i].indexOf("WB/");
imageLocation[i] = imagesSelected[i].substring(start + 3);
}
}