2014-04-19 103 views
0

由於一些荒謬的原因,我的教授禁止我們在程序中使用break語句來終止循環。我正在製作Connect Four程序,並使用for循環來模擬播放器放下檢查器。如果我的循環是這樣的:JAVA:替代break語句?

for(int i = LOWEST_ROW_INDEX; i >= 0; i--) 
    { 
     if(gb[i][rChoice].equals(". ")) 
     { 
      gb[i][rChoice] = "r "; 
      break; //CANNOT USE BREAK 
     } 
    } 

我能做些什麼來代替break語句來終止循環?

+4

循環何時結束? –

+0

向for循環添加另一個條件。 'for(int i = LOWEST_ROW_INDEX; i> = 0,someBoolean; i - )'然後在你的身體中設置'someBoolean = false'當你想要休息時。 – Kon

回答

2

你可以騙一點點:

i = -1; 
+0

這不會作弊。在這個例子中'i'是在for循環中聲明的,它在它之外沒有作用域。所以設置爲'-1'不會產生副作用。所以這非常好 – arunmoezhi

0

將其轉換爲while

int i = LOWEST_ROW_INDEX; 
while(!gb[i][rChoice].equals(". ") && i >=0){ 
    i--; 
} 
if (i >= 0){ 
    gb[i][rChoice] = "r "; 
} 
0

這不是SOOO可笑。一些純粹主義者認爲break是邪惡的 - 類似於「多重return陳述」,但不如帶有標籤的「break」或goto。一個嵌套循環和一些break語句的程序可能會相當混亂。

這裏的另一個可能的解決辦法是這樣的:

private int findInsertionIndex() 
{ 
    for(int i = LOWEST_ROW_INDEX; i >= 0; i--) 
    { 
     if(gb[i][rChoice].equals(". ")) 
     { 
      return i; 
     } 
    } 
    return -1; 
} 

// Use 
int insertionIndex = findInsertionIndex(); 
if (insertionIndex != -1) 
{ 
    gb[insertionIndex][rChoice] = "r "; 
} 

(是的,我知道,我換一個break反對法「多回報」有時這是所有關於玩遊戲,我認爲。代碼片段已經顯示了一些可能被認爲比break差的做法,例如,奇數變量名,全局變量和字符串的二維數組......