首页 > 解决方案 > 当它从java中的内部“for”循环“中断”时它会“更新”吗?

问题描述

下面显示的代码旨在使用嵌套for循环生成 36 范围内的 30 个不同数字。

这个例子表明,当它break来自内部for循环时,它将++i在外部“for”循环中执行“update”(在这个例子中“update”是)。但是我的老师告诉我不会。

但是当我调试它时,它确实执行了“更新”。我对么?

public class array {

    public static void main(String[] args) {
        int a[] = new int[30];
        for( int i=0;i<a.length;++i)
        {
            a[i] = (int)( Math.random()*36 ) +1;
            for(int j=0;j<i;++j)
            {
                if(a[i]==a[j])
                {
                    --i;
                    break;
                }
            }
        }
        for( int num: a) System.out.print( num+" " ); 
        System.out.println();
    }
}

标签: java

解决方案


break打破了内部循环。for外循环继续( )的更新部分++i。如果你的老师告诉你它不会那样做++i,他/她就错了。如果执行了内部更新(++j),则不break执行,但外部更新是。

为了清楚起见,我们在谈论同样的事情:

int a[] = new int[30];
for (int i = 0; i < a.length; ++i) {
    // Outer update ----------^^^

    a[i] = (int) (Math.random() * 36) + 1;
    for (int j = 0; j < i; ++j) {
        // Inner update ---^^^

        if (a[i] == a[j]) {
            --i;
            break; // <==== This break
        }
    }
}

for (int num : a) {
    System.out.print(num + " ");
}
System.out.println();

推荐阅读