Java初学者:扫描仪控制台和两个6面骰子问题

时间:2010-10-26 03:29:31

标签: java

我必须创建一个程序,用户可以在其中输入所需的总和,然后滚动两个六面骰子,直到它们的总和是所需的总和。我知道a)我必须使用Scanner,因为它是一个交互式程序。 b)我必须使用不定循环来解决问题,包括使用随机数。 c)我不指望你给我答案,就像我只是复制和粘贴一样。我只想指导我做什么,以便我的代码实际编译。

这是我的代码:

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:';'期待的   (总和!=数字){                               ^ Game.java:29:预期
  System.out.println(“所需的骰子总和:   “);                            ^ Game.java:29:非法启动类型
  System.out.println(“所需的骰子总和:   “);                             ^ 3错误


修改

还有3个编译错误

import java.util.*;

 public class Game {
     public static void main(String[] args) {
         System.out.println("Try rolling two six-sided dice");
         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();
         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

3 个答案:

答案 0 :(得分:5)

为什么你有:

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

主要的一面?把它放回去。

此外,虽然与将其更改为while时不同。


回应您的新问题:

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

应该是这样的:

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

因为你为随机而不是变量rand做变量r。

答案 1 :(得分:2)

  1. 应该是while,而不是While

  2. 您在代码末尾缺少右括号(})。

  3. (当前)最后两行需要在方法内部。

  4. 您尚未正确声明名为number的变量。这与问题#3有关。

  5. 您首先调用随机生成器r,但稍后尝试通过rand引用它。


  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();
    
            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");
        }
    }
    

答案 2 :(得分:0)

最后两行:

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

在你的主人之外。他们需要在主要的。如果您希望数字成为您班级的成员,请将其声明为您的主要成员,并在main中初始化,例如:

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

此外,您无法在方法之外创建System.out.println。把它放在主。