Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在for循环的第二次迭代中检查条件?_Java - Fatal编程技术网

Java 如何在for循环的第二次迭代中检查条件?

Java 如何在for循环的第二次迭代中检查条件?,java,Java,我有一个for循环,需要在其中插入一个条件。但是问题是在第一次迭代中,我得到一个空指针异常,因为条件中的值只会在第二次迭代中填充 for (int i = 0; i < linkElements.size(); i++) { System.out.println(linkElements.size()); // I need to add a condition here generatelocators("select", linkElements.get

我有一个for循环,需要在其中插入一个条件。但是问题是在第一次迭代中,我得到一个空指针异常,因为条件中的值只会在第二次迭代中填充

for (int i = 0; i < linkElements.size(); i++) {
    System.out.println(linkElements.size());
        // I need to add a condition here
    generatelocators("select", linkElements.get(i), driver);
}
for(int i=0;i
如果初始条件得到条件,则可以在条件中避免出现
NullPointerException
。更具体地说,如果原始条件确保某个数据星座只可能从第二次迭代开始,但您希望循环经过第一次迭代,则可以编写如下for循环:

boolean isFirstIteration = true;
for (int i = 0; i < linkElements.size() && (isFirstIteration || yourActualCondition);
        i++, isFirstIteration = false) {

    System.out.println(linkElements.size());
        // I need to add a condition here
    generatelocators("select", linkElements.get(i), driver);
}
布尔值isFirstIteration=true;
对于(int i=0;i
换句话说,将您的实际条件嵌套在一个外部条件中,或者将其与第二个条件相链接
isFirstIteration
。然后确保
isFirstIteration
在开始时仅为true一次


如果循环进行了一点,最终可能仍然会出现空指针异常(或其他异常)。这是不可能知道的,因为你在问题中省略了条件。关于该条件的更多详细信息,我们可能会为您提供更多帮助。

以下是两个
循环解决方案,它们只跳过集合中的第一个元素:

for(int i=1;i0){
//你的代码在这里
}
}
使用
迭代器

linkElements.listIterator(1)//跳过第一个元素
.foreach剩余(元素->{
//你的代码在这里
});
//将“整数”替换为linkElements的实际类型
迭代器迭代器=linkElements.listIterator(1);//跳过第一个元素
while(iterator.hasNext()){
整数元素=迭代器.next();
//你的代码在这里
}
如果有更多的null元素,或者它们不在固定索引上,则
null
检查是更合适的解决方案:

for(int i=0;i{
if(元素!=null){
//你的代码在这里
}
});
linkElements.iterator()
.foreach剩余(元素->{
if(元素!=null){
//你的代码在这里
}
});
//将“整数”替换为linkElements的实际类型
迭代器迭代器=linkElements.Iterator();
while(iterator.hasNext()){
整数元素=迭代器.next();
if(元素!=null){
//你的代码在这里
}
}
和两种解决方案,使用:

linkElements.stream()
.skip(1L)//跳过第一个元素
.forEach(元素->{
//你的代码在这里
});
linkElements.stream()
.filter(Objects::nonNull)//跳过null元素
.forEach(元素->{
//你的代码在这里
});

这个问题有点不清楚。在第一次迭代中需要一个条件,在第二次迭代中得到该条件的值?你在寻找什么样的条件?
如果(i>0){
等。将“for(int i=0;i