Java 如何增加catch块中的值?

Java 如何增加catch块中的值?,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我是编程新手。这是我的设想。我正在测试一个站点。如果某个链接未建立,则应转到捕捉块并移动到下一步。如果在k循环中失败,它应该执行k++;不是i++;或j++。如果在j循环中失败,则应增加j值,而不是i值或k值。怎么做 public static void main(String[] args) throws NoSuchElementException { int i = 0, j = 0, k = 0; String links[] = new String[10];

我是编程新手。这是我的设想。我正在测试一个站点。如果某个链接未建立,则应转到捕捉块并移动到下一步。如果在k循环中失败,它应该执行k++;不是i++;或j++。如果在j循环中失败,则应增加j值,而不是i值或k值。怎么做

public static void main(String[] args) throws NoSuchElementException {
    int i = 0, j = 0, k = 0;
    String links[] = new String[10];
    links[0] = "link1";
    links[1] = "link2";
    links[2] = "link3";
    links[3] = "link4";
    WebDriver driver = new FirefoxDriver();

    while (i < 4) {
        try {
            driver.get(links[i]);
            driver.findElement(By.xpath("//div[contains(@id,'image')]")).click();
            while (j < 5) {
                driver.findElement(By.xpath("//div[contains(@id,'header')]")).click();
                while (k < 8) {
                    driver.findElement(By.xpath("//div[contains(@id,'title')]")).click();
                    k++;
                }
                j++;
            }
            i++;
        } catch (NoSuchElementException e) {
            System.out.println(e);
            // How to increment the  value of i or j or k
        }
    }
}
publicstaticvoidmain(字符串[]args)抛出NoSuchElementException{
int i=0,j=0,k=0;
字符串链接[]=新字符串[10];
链接[0]=“链接1”;
链接[1]=“链接2”;
链接[2]=“链接3”;
链接[3]=“链接4”;
WebDriver=newfirefoxdriver();
而(i<4){
试一试{
driver.get(links[i]);
findElement(By.xpath(“//div[contains(@id,'image')]))))。单击();
而(j<5){
findElement(By.xpath(“//div[contains(@id,'header')]))))。单击();
而(k<8){
findElement(By.xpath(“//div[contains(@id,'title')]))))。单击();
k++;
}
j++;
}
i++;
}捕获(无接触元素例外e){
系统输出打印ln(e);
//如何增加i、j或k的值
}
}
}

在代码顶部,有:

char currentLoop = 'i';
然后在每次while循环声明之后立即相应地设置值,如下所示:

while (i < 4) {
    currentLoop = 'i';
    ...

    while (j < 5) {
        currentLoop = 'j';
        ...

        while (k < 8) {
            currentLoop = 'k';
            ...
        }
    }
}

就像你在while循环i++,j++k++中做的一样,我认为你错过了OP的要求。注意有3个循环,每个循环有一个不同的字母。如果在
k
循环中失败,OP希望增加该特定变量。不是其他的。@Gaskoin你能解释得更清楚些吗?例如,请在顶部设置一个
char
变量(
charcurrentloop='i';)
。进入每个循环后,存储相应的字符。然后在你的
catch
中,做一个类似
的检查,如果(currentLoop=='k'){k++;}
@Ascalonian你是对的。Hideandseek-您应该跟踪您所在的循环,或者不执行嵌套循环
if (currentLoop == 'i') {
    i++;
}else if (currentLoop == 'j') {
    j++;
}else if (currentLoop == 'k') {
    k++;
}