Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java初学者:扫描器控制台和两个6边骰子问题_Java - Fatal编程技术网

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

Java初学者:扫描器控制台和两个6边骰子问题,java,Java,我必须创建一个程序,用户可以在其中输入所需的和,然后滚动两个六面骰子,直到它们的和是所需的和。我知道a)我必须使用扫描仪,因为它是一个交互式程序。b) 我必须使用不定循环来解决这个问题,包括使用随机数。c) 我不希望你给我答案,就像我只是在复制和粘贴一样。我只想知道该怎么做,这样我的代码才能真正编译 这是我的密码: import java.util.*; public class Game { public static void main(String[] args) {

我必须创建一个程序,用户可以在其中输入所需的和,然后滚动两个六面骰子,直到它们的和是所需的和。我知道a)我必须使用扫描仪,因为它是一个交互式程序。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
  • 它应该是
    while
    ,而不是
    while

  • 代码末尾缺少右括号(
    }

  • (当前)最后两行必须位于方法内部

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

  • 您首先调用随机生成器
    r
    ,然后尝试通过
    rand
    引用它


  • 尝试类似的方法(未经测试):

    你为什么有:

         System.out.println("Desired dice sum: ");
         int number = console.nextInt();
    
    在主楼外面?把它放回去

    另外,while与while不同,请将其更改为while


    针对您的新问题:

    int roll1 = rand.nextInt(6) +1;
    
    应该是这样的:

    int roll1 = r.nextInt(6) + 1;
    
    因为您正在为随机变量生成变量r,而不是变量rand。

    最后两行:

    System.out.println("Desired dice sum: ");
    int number = console.nextInt();
    
    不在你的主要工作范围之内。他们需要在主要方面。如果希望数字成为类的成员,请在main上声明它,并在main中初始化它,如:

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

    此外,不能在方法之外生成System.out.println。把它放在main中。

    请放在哪一行下面?@Makurian:当然会编译,但这并不意味着代码是正确的。那么我如何使结果相加并显示为我的输出,直到它满足用户所需的总和?我也需要在那里做吗?@Makurian:不,你的代码会找到总和(并退出)很好,但是您需要打印所需的输出,我假设它是
    主体的最后一行。请参阅我的编辑。此外,请注意您接受的输入。如果用户输入的总和大于12,则代码将永远运行。你明白为什么吗?请看编辑。是 啊我需要在那里放一个if/else语句,告诉用户他们放置了错误的输入,只是为了保持选中状态。
    
    private int number;
    public static void main(String args[])
    {
      ...
      number = console.nextInt();
      ...
    }