Java 如何在for循环的第二次迭代中检查条件?
我有一个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 (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