java - 随机生成数字的问题 - Java

标签 java oop

我正在研究 Joyce Farrell 所著的《Java 编程》书中的这个项目,但我遇到了随机生成的数字和用户的猜测未正确检查的问题。例如,用户有 3 个猜测,假设他们第一次猜测 2,第一个随机生成的数字是 2,程序将打印出你输了。当猜测确实正确时。请帮我。我已经添加了该计划的详细信息以及我迄今为止所做的事情。

<小时/>

创建一个彩票游戏应用程序。生成三个随机数(请参阅附录 D 以获取帮助) 这样做),每个数字在 0 到 9 之间。允许用户猜测三个数字。比较每一个 用户对三个随机数的猜测并显示一条消息,其中包括用户的猜测 猜测,随机确定的三位数,以及用户拥有的金额 获胜如下。

匹配数字奖($)

任何一个匹配 10 两个匹配 100 三个匹配,不按顺序排列 1000 三个匹配,精确顺序为 1,000,000

没有匹配0

确保您的应用程序可以容纳重复的数字。例如,如果用户 猜测1、2、3,随机生成的数字是1、1、1,不给用户 三个正确猜测的功劳——只有一个。将文件另存为 Lottery。

<小时/>

我的源代码

// 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);
            }
    }
}

最佳答案

您正在使用 ranNum.nextInt(LIMIT) 打印新生成的数字,但您正在将用户输入与存储在 GenXXX 变量中的数字进行比较。

解决方案:打印变量。

System.out.println(GenFirst + " " + GenSecond + " " + GenThird);

如果您仍然想使用循环进行打印,可以将数字存储在数组中。

// generate
final int[] generated = new int[TIMES];
for (int x = 0; x < TIMES; x++)
    generated[x] = ranNum.nextInt(LIMIT);

// print
for (int x = 0; x < TIMES; x++)
    System.out.print(generated[x] + " ");

关于java - 随机生成数字的问题 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28386909/

相关文章:

Java with JACOB - 如何正确设置 Java 库路径

java - Spring 启动 + LocalDate : "No primary or default constructor"

java - 如何缩短具有多个字段的比较器?

java - 如何从java类调用python脚本

java - 这些实体的层次结构

java - 如何在 Java 中使用用户输入引用类型、对象名称和参数在运行时创建对象

javascript - 如何按共同特征组织数据?

java - 获取每个 Mapper 或 Spark MapReduce 模型中全局的每个键的计数

java - 如果构造函数不构建对象,用什么来创建对象?

oop - 是否有可能进一步将最佳实践嵌入到编程语言中?