2012-10-15 33 views
1

我想在這裏使用!= 0排除這個嵌套for循環中的零;但它沒有做任何事情。我試圖在滾動時獲得2個六方骰子的概率。我必須計算出它們先滾動的次數,但死亡沒有零點,所以我必須排除它。我無法弄清楚爲什麼這不起作用。如何在Java for循環中排除零

for(die2 = 0; die2 <= 6 && die2 != 0; die2++) 
      for(die1 = 0; die1 <= 6 && die1 != 0; die1++) 
       System.out.println("Die 2: " + (die2 * userInputValue) + " " + "Die 1: " +  (die1 * userInputValue)); 
+0

你能解釋「它沒有做任何事情嗎?」?你看到沒有打印輸出?除了明顯的「不從zer0開始」之外,您的問題實際上是什麼? – Mawg

+0

1)爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 2)請注意,「沒有工作」並不能幫助我們來幫助你。複製/粘貼錯誤或輸出。 –

+0

對不起,我是新來的。我剛剛發現它,這是一個神派,但我仍然得到它的訣竅。我的問題是它不會顯示任何嵌套循環的輸出。終端將是空白的。但是,這是因爲我開始我的循環0而不是1 – user1745508

回答

2

你應該爲0。

從1開始的循環,而不是讓我們來看看當前的代碼:

for (die2 = 0; die2 <= 6 && die2 != 0; die2++) 
    for (die1 = 0; die1 <= 6 && die1 != 0; die1++) 
     // Do something 

你爲什麼不打什麼東西呢?這個代碼塊是等價(*),以

die2 = 0; 
while (die2 <= 6 && die2 != 0) { 
    die1 = 0; 
    while (die1 <= 6 && die1 != 0) { 
     // Do something 
     die1++; 
    } 
    die2++; 
} 

注意的是,如果第一個條件檢查die2是0,但die2始終是0在進入循環,因爲這是你設置什麼。相反,你應該使用

for (die2 = 1; die2 <= 6; die2++) 
    for (die1 = 1; die1 <= 6; die1++) 
     // Do something 

這將跳過0,因爲你從來沒有在第一時間設置die2die1爲0。


(*)while循環的這種重寫是不準確相當於一個for循環,因爲這種重寫不會保留continue語句的語義,但您的代碼不繼續使用,所以在這種情況下,它等同於原始的。

+0

謝謝!這是漫長的一天......哈哈 – user1745508

2

剛剛從開始循環1代替0

for(int die2 = 1; die2 <= 6 ; die2++) 
      for(int die1 = 1; die1 <= 6 ; die1++) 
       System.out.println("Die 2: " + (die2 * userInputValue) + " " + "Die 1: " +  (die1 * userInputValue)); 
+0

這也沒有工作。 – user1745508

+0

@ user1745508:你是什麼意思,它沒有工作。你有什麼例外 – kosa

+0

哦,我們走了。你編輯過嗎? – user1745508