2012-05-07 82 views
-3

我的循环中间我的布尔表达式变成false。我应该使用什么样的循环? 我一直在阅读循环教程,每个人都提到while循环无法做到这一点。我试过将for循环和if语句组合起来,这也不起作用。对不起,这个简单的问题。我应该在java中使用什么样的循环?

} 
    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发生变化,我将如何实施休息制止?

+1

首先,向我们展示你的尝试。其次,你将不得不提供更多关于你想要做什么的信息。 –

+0

这一切都取决于。他们都有目的。 –

+0

你可以通过显示你的代码来使问题更具针对性,也许可以解释你迄今为止从自己的研究中发现的东西。这里最好的问题是那些证明你已经为这个话题付出了一些努力的东西,并且关于你的措辞的一些事情告诉我你合理地有更多的你可以贡献,使这可能是一个很好的问题。祝你好运! – jmort253

回答

3

这里是当一个布尔值要监控的变化,你怎么可以阻止一个while循环,一个简单的例子,它是从假值为true:

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; 
    } 
} 

这是有点非正统的,但它演示了如何在第二个PARAM可以使用for循环中的eter来监视可能与int i值的实际值相关或不相关的布尔值条件。

3

您可以使用一个“破”,退出任何循环当你的条件为假

+2

您应该显示一个示例,以便更清楚地了解它如何工作。 – jmort253

相关问题