这个for循环写错了,谁能给我提示一下?

问题:如下代码,for循环遍历了parentElement,我取的第一个,但是执行完parentElement.get(i).click()后,又会走到while这里,这样会造成我的一个错误。我现在想做的就是,我取完一次后,就立马退出所有的循环,不在执行这个遍历操作。谁看到给我改一下吧

public void select(){
List parentElement = driver.findElements(By.xpath("//li[@unselectable='unselectable']"));
Iterator it1 = parentElement.iterator();
while(it1.hasNext()){
for (int i = 0; i < parentElement.size(); i++) {
parentElement.get(i).click();
break;
}
}
System.out.println("111");
}

public void select(){
List parentElement = driver.findElements(By.xpath("//li[@unselectable='unselectable']"));
Iterator it1 = parentElement.iterator();
while(it1.hasNext()){
for (int i = 0; i < parentElement.size(); i++) {
parentElement.get(i).click();
break;
}
break;
}
System.out.println("111");
}

for循环里面的break只能退出for循环,然后进入while循环,这个时候while还在执行,如果想要for循环执行完毕后,也要退出while循环,可以在for之后再加一个break,用来退出while,但是这样感觉while好像没有什么意义了啊?为何不直接使用if

为什么要使用双重循环呢?我个人感觉一个for循环就可以满足功能了吧。

如果想要直接退出双重循环的话,直接return或者在第一重循环里面设置一个标志位进行判断然后break就可以了。

berak只能跳出一层循环,个人觉得没有必要用while循环,用if会好点,用while你需要在for循环后面在加一个break;

public void select(){
List parentElement = driver.findElements(By.xpath("//li[@unselectable='unselectable']"));
Iterator it1 = parentElement.iterator();
if(it1.hasNext()){
for (int i = 0; i < parentElement.size(); i++) {
parentElement.get(i).click();
break;
}
}
System.out.println("111");
}

很简单,多加一个标志位控制下就行,代码如下

public void select(){
List parentElement = driver.findElements(By.xpath("//li[@unselectable='unselectable']"));
Iterator it1 = parentElement.iterator();
bool bBreak = false;
while(it1.hasNext()){
for (int i = 0; i < parentElement.size(); i++) {
parentElement.get(i).click();
bBreak = true;
break;
}
if( bBreak )
break;
}
System.out.println("111");
}

都有道理。如果你非要这样写的话,就要像我上面的楼主,加个开关控制一下。