0

我想将一个字符串数组中的值存储到另一个字符串数组中。但是下面的代码出现“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);
        }
        }
4

5 回答 5

5

你需要做这样的事情:

String[] imageLocation = new String[imagesSelected.length];

否则imageLocationnull

顺便说一句,你不需要if你的循环。这是完全多余的,因为这将与循环开始时使用的逻辑相同。

于 2012-12-12T04:34:31.363 回答
4

图像位置[i]

你初始化了imageLocation吗?

我相信这个错误是因为你试图指向字符串数组中不存在的位置。imageLocation[0,1,2,3...etc] 尚不存在,因为字符串数组尚未初始化。

试试 String[] imageLocation[不管你希望数组有多长]

于 2012-12-12T04:41:36.870 回答
2

您必须为 imageLocation 分配内存。

imageLocation = new String[LENGTH];
于 2012-12-12T04:34:24.490 回答
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);
        }
    }
于 2012-12-12T04:38:21.547 回答
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);
        }
        }
于 2012-12-12T04:41:08.570 回答