oop对随机生成的Java数字有问题
我正在研究Joyce Farrell的Java编程书中的这个项目,我对随机生成的数字和用户的猜测没有被正确检查有一个问题。例如,用户有3次猜测,假设他们的第一次猜测是2,第一个随机生成的数字是2,程序将打印出你输了。当猜测是正确的时候。请帮帮我。我已经添加了该计划的细节,以及我迄今为止所做的工作
创建彩票游戏应用程序。生成三个随机数(参见附录D中的帮助 这样做),每个都在0到9之间。允许用户猜测三个数字。比较每一个 用户对三个随机数的猜测,并显示一条消息,其中包括用户的 猜猜,随机确定的三位数,以及用户拥有的金额 赢了如下
配对号码奖(元)
任何一个匹配10 两个匹配100 三个匹配,不是为了1000 三个完全匹配,顺序是1000000
没有对手0
确保应用程序中包含重复的数字。例如,如果用户 猜测1、2和3,并且随机生成的数字是1、1和1,不会给用户 有三个正确的猜测——只有一个。将文件另存为彩票
我的源代码
// Filename: Lottery.java
// Written by: Andy A
// Written on: 14 January 2015
import java.util.Scanner;
import java.util.Random;
public class Lottery {
public static void main(String[] args) {
Scanner userInput = new Scanner(System.in);
Random ranNum = new Random();
// LIMIT Contains The Numbers From 0 - 9
// TIMES Contains The Number of Time ranNum Should Run
final int LIMIT = 9;
final int TIMES = 3;
// Users Guesses
int usersFirstGuess;
int usersSecondGuess;
int usersThirdGuess;
// Randomly Generated Numbers
final int GenFirst = ranNum.nextInt(LIMIT);
final int GenSecond = ranNum.nextInt(LIMIT);
final int GenThird = ranNum.nextInt(LIMIT);
// User is asked for 3 guesses
System.out.println("Please enter your first guess: ");
usersFirstGuess = userInput.nextInt();
System.out.println("Please enter your second guess: ");
usersSecondGuess = userInput.nextInt();
System.out.println("Please enter your third and final guess: ");
usersThirdGuess = userInput.nextInt();
// Winning Amounts
final double WinTen = 10;
final double WinHun = 100;
final double WinThund = 1000;
final double WinMillion = 1000000;
final int WinZero = 0;
// Shows the randomly generated numbers
for(int x = 0; x < TIMES; ++x)
System.out.print(ranNum.nextInt(LIMIT) + " ");
System.out.println();
// First Generated
if(GenFirst == usersFirstGuess ) {
System.out.println("You have won: $" + WinTen);
}
else if(GenSecond == usersSecondGuess) {
System.out.println("You have won: $" + WinTen);
}
else if(GenThird == usersThirdGuess) {
System.out.println("You have won: $" + WinTen);
}
}
}
# 1 楼答案
您正在使用
ranNum.nextInt(LIMIT)
打印新生成的数字,但是您正在将用户输入与GenXXX
变量中存储的数字进行比较解决方案:打印变量
如果仍要使用循环打印,可以将数字存储在数组中
# 2 楼答案
没错, 你为什么要打印
当你应该只是打印的时候
# 3 楼答案
这应该能奏效
# 4 楼答案
这不是随机生成的数字的问题,而是如果你想用你的方式向用户展示它们
在
if / else if
语句之前,在for循环中生成新的随机数。这意味着,与用户输入(genFirst
)相比的数字可以是3,但在for循环中向用户显示的数字是一个新的随机数,例如2要解决此问题,应显示生成的数字,如下所示:
这段代码创建了一个生成的数字数组,并在其中循环打印它们。显然,你也可以
print GenFirst
,然后print GenSecond
,然后print GenThird
我希望这有帮助