24

我正在将一些数据下载到字符串数组中。比方说ImageLinks。如何检查数组中的项目是否存在?

我在尝试

if(ImageLinks[5] != null){}

但它给了我ArrayIndexOutOfBoundsException。(因为数组中真的没有5个链接)

4

6 回答 6

35

为了防止ArrayIndexOutOfBoundsException,您可以使用以下方法:

if(ImageLinks.length > 5 && ImageLinks[5] != null)
{
    // do something
}

由于中的语句if是从左到右检查的,因此如果数组的大小不正确,您将无法进行空值检查。

对于任何场景都非常容易概括。

于 2012-10-15T14:19:44.130 回答
8

写一个静态函数

public static boolean indexInBound(String[] data, int index){
    return data != null && index >= 0 && index < data.length;
}

现在,在您的代码中调用它

if(indexInBound(ImageLinks, 5) && ImageLinks[5] != null){
   //Your Code
}
于 2012-10-15T14:25:58.007 回答
6

在进行查找之前确保数组具有该长度

if(ImageLinks.length > 5 && ImageLinks[5] != null){}
于 2012-10-15T14:19:35.667 回答
1

它失败的原因是数组的元素少于 6 个。

首先检查数组是否有正确数量的元素,然后检查该元素是否存在于数组中。

 if (ImageLinks.length > 5 && ImageLinks[5] != null) {
     // do something
 }
于 2017-01-13T22:17:03.150 回答
0

是的,元素少于 6 个 ImageLinks[5] 指的是第 6 个元素,因为 java 中的数组索引从 0 开始

于 2012-10-15T14:19:47.443 回答
0
if (ImageLinks != null && Stream.of(ImageLinks).anyMatch(imageLink-> imageLink != null)) {
//An item in array exist
}
于 2020-05-24T07:23:28.043 回答