2010-10-26 25 views
-1

我必須創建一個程序,用戶可以在其中輸入所需的總和,然後滾動兩個六面骰子,直到它們的總和爲期望的總和。我知道a)我必須使用Scanner,因爲它是一個交互式程序。 b)我必須使用無限循環來解決包括使用隨機數的問題。 c)我不指望你像我只是複製和粘貼一樣給我答案。我只是想引導做什麼,以便我的代碼實際編譯。Java初學者:掃描儀控制檯和兩個6面骰子問題

這裏是我的代碼:

import java.util.*; 

public class Game { 
    public static void main(String[] args) { 
     System.out.println("Try rolling two six-sided dices"); 
     System.out.println("until their sum is your"); 
     System.out.println("desired sum."); 
     System.out.println(); 

     Scanner console = new Scanner (System.in); 
     Random r = new Random(); 
     int sum = 0; 
     int tries = 0; 
     While (sum != number) { 
      int roll1 = rand.nextInt(6) +1; 
      int roll2 = rand.nextInt(6) +1; 
      sum = roll1 + roll2; 
      tries++; 
     } 
    } 

     System.out.println("Desired dice sum: "); 
     int number = console.nextInt(); 

*我不斷收到這3個編譯錯誤:

Game.java:21: ';'預期雖然 (sum!= number){Game.java:29:expected
System.out.println(「Desired dice sum: 」); ^ Game.java:29:非法啓動類型
System.out.println(「Desired dice sum: 」); ^ 3個錯誤


編輯:

仍然得到3個編譯錯誤

進口的java.util。*; (「試着滾動兩個六面骰子」); System.out.println(「直到他們的總和是你的」); System.out.println(「期望的總和」); System.out.println();

 Scanner console = new Scanner (System.in); 
    Random r = new Random(); 
    System.out.println("Desired dice sum: "); 
    int number = console.nextInt(); 

    int sum = 0; 
    int tries = 0; 

    while (sum != number) { 
     int roll1 = rand.nextInt(6) +1; 
     int roll2 = rand.nextInt(6) +1; 
     sum = roll1 + roll2; 
     tries++; 
    } 
} 

}

@馬特:

這是我應該有輸出,對不起,沒有說清楚:

Desired dice sum: 9 
4 and 3 = 7 
3 and 5 = 8 
5 and 6 = 11 
5 and 6 = 11 
1 and 5 = 6 
6 and 3 = 9 

回答

2
  1. 應該while,不While

  2. 您在代碼末尾丟失了右大括號(})。

  3. (當前)最後兩行需要放在方法中。

  4. 您尚未正確聲明名爲number的變量。這與問題#3有關。

  5. 您首先打電話給您的隨機發生器r,但稍後嘗試通過rand來引用它。


嘗試是這樣的(未經測試):

import java.util.*; 

public class Game { 
    public static void main(String[] args) { 
     System.out.println("Try rolling two six-sided dices"); 
     System.out.println("until their sum is your"); 
     System.out.println("desired sum."); 
     System.out.println(); 

     System.out.println("Desired dice sum: "); 
     Scanner console = new Scanner (System.in); 
     int number = console.nextInt(); 

     Random rand = new Random(); 
     int sum = 0; 
     int tries = 0; 
     while (sum != number) { 
      int roll1 = rand.nextInt(6) +1; 
      int roll2 = rand.nextInt(6) +1; 
      sum = roll1 + roll2; 
      tries++; 
      System.out.println("Found sum: " + sum); 
     } 

     System.out.println("Done in " + tries + " tries"); 
    } 
} 
+0

更正。謝謝。 – Makurian1 2010-10-26 03:37:29

+0

@ Makurian1:看我的編輯。有用嗎? – 2010-10-26 03:43:43

+0

我試過了,得到0錯誤。謝謝! – Makurian1 2010-10-26 03:49:54

4

爲什麼你:

 System.out.println("Desired dice sum: "); 
    int number = console.nextInt(); 

出的主側?把它放回去。

而且,雖然改變它的時候不一樣。


在回答您的新的問題:

int roll1 = rand.nextInt(6) +1; 

應該是這樣的:

int roll1 = r.nextInt(6) + 1; 

因爲你是一個變量r爲你隨機不是一個變量蘭特。

+0

請在哪一行下面? – Makurian1 2010-10-26 03:37:10

0

最後2行:

System.out.println("Desired dice sum: "); 
int number = console.nextInt(); 

在外面你的主要的。他們需要主力。如果你想數字是你的類的成員,聲明它上面你的主,並在主初始化,如:

private int number; 
public static void main(String args[]) 
{ 
    ... 
    number = console.nextInt(); 
    ... 
} 

而且,你不能做出的System.out.println以外的方法。把它放在主要。