2016-07-31 49 views
-3

關於通過做網站編程我卡在DoubleDice練習。它應該運行一個while循環,直到你拿出每個骰子相同的值(雙打 - 3和3,4和4等)。java - while循環中的隨機引起無限循環與所有相同的數字

我輸入了我認爲是正確的代碼,但我得到這個無限循環,每次通過while循環打印完全相同的「隨機數」。

我已經思考了大約一天,並決定把它交給SO。

謝謝。

import java.util.Random; 

public class diceDoubles { 

    public static void main(String[] args){ 

     Random dice = new Random(); 

     int roll1 = 1 + dice.nextInt(6); 
     int roll2 = 1 + dice.nextInt(6); 

     System.out.println("HERE COMES THE DICE!\n"); 

     while(roll1 != roll2) { 

      System.out.println("Die 1: " + roll1); 
      System.out.println("Die 2: " + roll2); 
      System.out.println("The total is " + (roll1 + roll2) + "\n"); 
     } 
    } 
} 
+3

那麼,你爲什麼認爲你的價值觀應該改變?你的代碼的哪一部分讓你這麼想? – Pshemo

+3

你永遠不會更新循環中的'roll1'和'roll2',所以條件不會改變。 – QBrute

+0

值應該改變,直到它產生雙打... –

回答

4

您需要添加「變量roll1roll12更新代碼」,以while循環,就像這樣:

while(roll1 != roll2) { 

    roll1 = 1 + dice.nextInt(6); 
    roll2 = 1 + dice.nextInt(6); 

    System.out.println("Die 1: " + roll1); 
    System.out.println("Die 2: " + roll2); 
    System.out.println("The total is " + (roll1 + roll2) + "\n"); 
} 
+0

你是完全正確的,那正好在我的頭上 – Li357

+0

謝謝。最初我複製並將我的int roll1 ... int roll2代碼粘貼到while循環,但沒有修復它。 謝謝。 –

+0

不客氣! –

1

花一些時間與代碼的控制流,並且每條語句熟悉自己確實。

<type> <identifier>; 

這樣的行DECLARE變量 - 即給它一個類型和一個位置在命名空間中。一旦聲明瞭一個變量,對其的引用將在其範圍內一致,並且不能重新分配。 (大多數情況下,成員變量和局部變量共享名稱存在一些技巧,但您不必擔心這一點。)

請注意,這不會分配值。原始數據類型(int,boolean,double等)將具有默認值(0false),其引用將默認爲null

<identifier> = <expression>; 

計算表達式的值,並更新標識符以保存該值。您可以將它們合併爲:

<type> <identifier> = <expression>; 

將聲明一個變量並立即爲其賦值。

while(<condition>) { <expressions> } 

一次又一次地執行表達式,直到條件變爲false。它只有重複大括號之間的表達式,但。 在您的代碼中,這些大括號(即「while循環體」中的內容)之間沒有任何內容實際更新這些值。你只能在while循環之外調用賦值語句,所以沒有任何變化。

+1

我會的。感謝術語。和提示。 –