2011-10-24 62 views
1

我想要有一個for語句重複,直到給定int達到某個值。Java:執行語句直到給定變量達到某個值?

例如...

for (int variable = 0; variable < other_variable; variable++) { 

這樣做的問題是,for聲明永遠不會結束。它將繼續無休止地重複。我做錯了什麼?

這是我的代碼...

boolean itemexist_check = false; 
do { 
    int i2 = m_area.m_items.size(); 

    for (int i = 0; i < i2; i++) { 
     String s2 = m_area.m_items.get(i).returnName(); 
     System.out.println("Checking..."); 

     if (s2.contains(s)) { 
      System.out.println("You take the " + s2 + "."); 
      itemexist_check = true; 
      player.addItem(m_area.m_items.get(i)); 
      m_area.m_items.remove(i); 
     } 
     else { 
      //do nothing, repeat loop 
     } 
    } 
} 
while (itemexist_check == false); 

在這段代碼,m_area.m_items.size()將返回1,所以i21

+1

沒有足夠的信息。 – Marcelo

+1

你必須提供更多的上下文,因爲據我所知,for-loop應該很好。除非你也增加other_variable,否則_should_會出現變量

+0

你如何設置other_variable? –

回答

4

有幾種可能性:

  1. 更改variable循環的身體裏面;
  2. 你在循環體內改變other_variable;
  3. other_variable設置爲較大的值,在這種情況下,循環可能需要很長時間才能終止;
  4. 你的代碼永遠不會完成環路的某個迭代,例如:
    • 它卡住嵌套循環內的建議通過@ Eng.Fouad的意見,或
    • 它等待鎖,或
    • 它的阻止的I/O調用從未完成(或需要很長的時間才能完成)等

裏面不知道的other_variable典型值,看到BOD這是任何人猜測的循環。

+0

+1 4.卡在嵌套循環中 –

-1

你應該嘗試

do { 


}while(condition is true) 

循環。不過那就是說,你必須執行檢查,假設會有失控的數據或條件導致無限循環。只是我的2美分

+0

這將如何治癒一個明顯無限循環? – EJP

+0

該解決方案在發佈代碼片段之前。 – r0ast3d

+0

根本不回答我的問題。無限循環如何解決無限循環問題? – EJP

0

在一個側面說明,

串S = m_area.m_items.get(I).returnName();

將會引起一個異常,如果後

m_area.m_items.remove(ⅰ)調用在後續的或以後的重複;

被調用,因爲每次m_area.m_items.remove(i)被調用時,該列表/陣列失去一個項目及其大小減小,這是從未反映在迭代的邊界檢查。

0

當然是不是終止的do/while循環?該for循環不可能永遠運行。