2014-02-10 152 views
1

因此,我必須創建一個用於實驗室的while循環。然後我不得不將循環轉換爲do-while循環來查看設計中的差異,並確保我得到了相同的結果。現在我需要將它轉換爲for循環,但我不知道如何設置for語句。以下是它目前的情況:在Java中將do-while循環轉換爲for循環

do 
    { 
    die1Value = generator.nextInt(6) + 1; 
    die2Value = generator.nextInt(6) + 1; 
    if (die1Value == die2Value) 
    { 
     if (die1Value == 1) 
     { 
      snakeEyes += 1; 
     } 
     else if (die1Value == 2) 
     { 
      twos += 1; 
     } 
     else if (die1Value == 3) 
     { 
      threes += 1; 
     } 
     else if (die1Value == 4) 
     { 
      fours += 1; 
     } 
     else if (die1Value == 5) 
     { 
      fives += 1; 
     } 
     else if (die1Value == 6) 
     { 
      sixes += 1; 
     } 
     } 
     count += 1; 
    }while (count < NUMBER); 
+0

還有,你[試圖]( http://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html)? –

+6

我實際上是從你原來的'while'開始的,而不是你的'do while'。原因是'for'循環在開始時進行檢查,而不是結束,就像'while'一樣。所以原文將更接近你想要完成的內容。 –

回答

1

正如其他人所說,問題出現了for loop將在循環開始時檢查車況,但你do while循環將在你的循環的末尾檢查條件。

這就是說,用for loop,你是而不是保證至少有一次迭代。但是,使用do while循環,您至少保證有一個

假設這不是一個問題,for loop聲明可能是這樣的:

for (count = 0; count < NUMBER; count++) 

count = 0可能需要改變count = 1或任何count最初假設在啓動。


然而,看到如何count將需要爲你當前的代碼進行初始化,你可以省略初始化部分在for loop像這樣:

for (; count < NUMBER; count++) 
+0

如果在循環之前定義了初始值*,那麼也可以執行for(; count ADTC

+0

@ADTC好點。我也會包括這一點。 –

1

利用Java教程和Java Docs;你需要掌握循環的每個部分的語法和含義,因此在閱讀完這些內容後,如何轉換它並不困難。

(源)http://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html

for語句提供了一個緊湊的方式來迭代一個範圍的值。程序員經常將其稱爲「for循環」,因爲它的重複循環方式直到滿足特定的條件。 for語句的一般形式可表示如下:

for (initialization; termination; increment) { 
    statement(s); 
} 

當使用這個版本的for語句,請記住:

初始化表達式初始化循環;它會在循環開始時執行一次。 當終止表達式計算結果爲false時,循環終止。 增量表達式在循環的每次迭代之後被調用;這個表達式增加或減少一個值是完全可以接受的。

1

do-while循環不會檢查第一次迭代的條件,但for循環會執行此操作。因此,您需要首次在for循環中始終創建條件true

試試這個:

for (boolean keepWorking = true; keepWorking; keepWorking = ++count < NUMBER) { 
    // ... 
} 
+0

爲什麼不只是'for(count = X; count ADTC

+0

@ADTC:首先,for循環語句可能是錯誤的。正如我所解釋的那樣,在第一次迭代中使用'for'循環檢查條件,所以'count

+0

啊,是的,點指出。 – ADTC