我的布尔表达式在我的循环中间变得假。我应该使用哪种循环?我一直在阅读循环教程,每个教程都提到 while 循环无法做到这一点。我尝试将 for 循环和 if 语句组合在一起,但这也不起作用。对不起,简单的问题。
}
for(int k = 0;k < collb.length; k++){
//what was used after first calculation
grosssum += col4[k]*mix[k];
one=sum1 - grosssum;
}
for(int n = 0;n < collb.length; n++)
if(one < -need[n] && col4[n] >0){
col5[n]=col4[n]-inc[n] + arrayspecificpounds[n];
net += col5[n]*mix[n];
sum = sum1-net;
} //net is the sum of what was used * mix
//sum1 is what we started with
else{
if(one > need[n] && col4[n] >0){
col5[n]=col4[n]-inc[n] + arrayspecificpounds[n];
net += col5[n]*mix[n];
sum = sum1-net;
}
else col5[n] = col4[n] + arrayspecificpounds[n];
sum = sum1 - net;
}
for(int p = 0;p< collb.length; p++){
if(sum < -need[p] && col5[p] >0){
col6[p]=col5[p]-inc[p] + arrayspecificpounds[p];
net2 += col6[p]*mix[p];
sum2 = sum1 - net2;
}
else{
if(sum > need[p] && col5[p] >0){
col6[p]=col5[p]+inc[p] + arrayspecificpounds[p];
net2 += col6[p]*mix[p];
sum2 = sum1 - net2;
}
else col6[p] = col5[p] + arrayspecificpounds[p];
net2 += col6[p]*mix[p];
sum2 = sum1 - net2;
}
}
for(int q =0;q< collb.length; q++){
if(sum2 < -need[q] && col6[q] >0){
colr[q]=col6[q] - inc[q] +arrayspecificpounds[q];
}
else{
if(sum2 > need[q] && col6[q]>0){
colr[q]=col6[q] +inc[q] + arrayspecificpounds[q];
}
else colr[q] = col6[q] + arrayspecificpounds[q];
}
在此示例中,sum2 的值随着数组 col6 的增加而变化,但在数组的中间,不等式会发生变化。一旦 sum2 发生变化,我将如何实现中断以停止?
下面是一个简单的示例,说明当您正在监视的布尔值将其值从 false 更改为 true 时,如何停止 while 循环:
boolean done = false;
int count = 0;
// while not done, continue looping
while(!done) {
// do stuff
count++;
if(count > 7) {
done = true;
}
}
实际上,同样的技术也可以在 for 循环中使用:
boolean done = false;
for(int i = 0; i < 1000 && !done; i++) {
// do stuff
if(i > 7) {
done = true;
}
}
这有点不正统,但它演示了如何使用 for 循环中的第二个参数来监视可能与 int i 值的实际值相关也可能无关的布尔条件。
的条件为 false 时,您可以使用"break"退出任何循环