猿问

使用嵌套 for 循环时,if 语句是否会等到循环结束后再继续执行 if 语句代码?

当我运行代码时,程序不会将 j 的值分配给 [i + 1] 处的数组元素。


我不明白该程序出了什么问题,但我相信该程序在循环完成时将 j 的值添加到系列 [i+1] 中,我不知道为什么。我期望程序在满足“if 语句”后立即将 j 的值分配给系列[i+1]。


final int size = 100;

int series[] = new int[size];

series[0] = 0;

series[1] = 0;

for(int i = 1; i < size - 1; i++){

    for(int j = 1; j <= i; j++){

        if(series[i] == series[i - j]){

            series[i + 1] = j;

        }else{

            series[i + 1] = 0;

        }

    }

}

System.out.println(Arrays.toString(series));

实际结果:[0, 0, 1, 0, 3, 0, 5, 0, 7, 0, 9, 0, 11, 0, 13, 0, 15, 0, 17, 0, 19, 0, 21, 0, 23, 0,25, 0, 27, 0, 29, 0, 31, 0, 33, 0, 35, 0, 37, 0, 39, 0, 41, 0, 43, 0, 45, 0, 47, 0, 49, 0, 51, 0, 53, 0, 55, 0, 57, 0, 59, 0, 61, 0, 63, 0, 65, 0, 67, 0, 69, 0, 71, 0, 73,0, 75, 0, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0]


预期结果:[0,0,1,0,2,0,2,2,1,6,0,5,0,2,6,...]也称为 van eck 序列。


千巷猫影
浏览 104回答 1
1回答

MM们

您需要在第一次满足 if 条件后停止内部循环,即for(int i = 1; i < size - 1; i++){&nbsp; &nbsp; for(int j = 1; j <= i; j++){&nbsp; &nbsp; &nbsp; &nbsp; if(series[i] == series[i - j]){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; series[i + 1] = j;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; }else{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; series[i + 1] = 0;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}否则您将覆盖正确的值。
随时随地看视频慕课网APP

相关分类

Java
我要回答