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