2012-05-07 2 views
-3

Мое булевское выражение становится ложным в середине моего цикла. Какую петлю я должен использовать? Я продолжаю читать учебные руководства по циклам, и каждый из них упоминает, что цикл 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

Вот простой пример того, как вы можете остановить время цикла, когда логическое значение, вы отслеживаете изменения его значение от ложного истина:

boolean done = false; 
int count = 0; 

// while not done, continue looping 
while(!done) { 
    // do stuff 
    count++; 
    if(count > 7) { 
     done = true; 
    } 
} 

Тот же метод на самом деле может быть использован внутри для цикла, а также:

boolean done = false; 
for(int i = 0; i < 1000 && !done; i++) { 
    // do stuff 

    if(i > 7) { 
     done = true; 
    } 
} 

Это немного неортодоксальные, но он показывает, как 2-й параметров eter в вашем цикле for может использоваться для контроля логического состояния, которое может или не может быть связано с фактическим значением значения int i.

3

Вы можете использовать «перерыв», чтобы выйти из любого цикла, когда ваше условие ложно

+2

Вы должны показать пример, чтобы было более ясно, как это будет работать. – jmort253

Смежные вопросы