中循环修改java

中循环修改java,java,arrays,if-statement,for-loop,while-loop,Java,Arrays,If Statement,For Loop,While Loop,在此循环中: while(a < 100){ a=a+1; for(i = 0;i < arr.length;i++){ if(x < arr[i]){ arr2[i] = arr2[i] - z; x = x - z; if(x > arr[i]) break; } } } while(a

在此循环中:

while(a < 100){
    a=a+1;
    for(i = 0;i < arr.length;i++){
        if(x < arr[i]){
            arr2[i] = arr2[i] - z;
            x = x - z;
            if(x > arr[i]) break;
        }
    }
}
while(a<100){
a=a+1;
对于(i=0;iarr[i])中断;
}
}
}
导致中断的
i
th元素可能大于
x
,但
i+1
可能 如果小于
x
,我想从
I+1
中减去
x
,我怎么能让循环跳过
arr[I]
,然后转到
arr[I+1]
,而不完全中断循环,也不从顶部开始迭代


我的输出的一个例子是
arr2=(0,0,0,2,0,0,5)
其中
x=3
,因此我的循环终止于2,因为它小于3,但我仍然想从5中减去。

我想你可能有意这样做,但我无法想象你试图实现什么。 试一试纸上的算法

for (int i = 0; i < arr.length; i++){
    if (x < arr[i]) {
        arr2[i] -= z;
        x -= z;
        if (x <= 0) {
            break;
        }
        // Continue with smaller x (assuming z > 0) for rest of arr.
    }
}
相当于:

 START;
 loop:
     if (!CONDITION) {
         goto endloop;
     }
     STMT1;
     goto step;
     STMT2;
 step:
     STEP;
     goto loop;
 endloop:

你的意思是,使用continue而不是break?不继续开始循环的新迭代吗?这个循环的原因是什么?在你的计划中,你想完成什么?我已经阅读了两篇教程,其中说“继续”从一开始就开始循环,而不是仅仅跳过一个元素?你确定吗?对节目做些评论会有帮助的。while循环除了循环(100减去a的原始值)次之外什么也不做。for循环通常更好地表达了这一思想。变量z似乎是要从一个或多个arr2[]元素中扣除的数量,这些元素对应的arr[]元素大于或等于当前值x。可能while循环应该检查x是否变为负值,或者可能不是。所提供的代码可能令人困惑地近乎正确,也可能是大错特错;这实际上取决于代码的目标。
 START;
 loop:
     if (!CONDITION) {
         goto endloop;
     }
     STMT1;
     goto step;
     STMT2;
 step:
     STEP;
     goto loop;
 endloop: