【问题标题】:Java random number issue.Java随机数问题。
【发布时间】:2013-10-13 12:07:48
【问题描述】:

我是一名文凭学生,目前是编程和 Java 语言的新手,我正在制作一个应用程序,用于教授和培训孩子如何乘以和。该程序生成两个随机数并将它们打印在屏幕上供孩子们回答。我写的这个程序的问题是,在打印随机问题时,我的随机数似乎不起作用。程序编译成功,一切似乎都很好。但是一旦我运行它,这两个随机数总是“0”。你们介意就为什么我的随机数总是生成为“0”给出一些指示吗?欢迎提出其他批评和建议,以供将来参考:)

这是我的主要驱动类

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package multiplicationteacher;

import java.util.Scanner;

/**
 *
 * @author Jeremy Lai
 */
public class MultiplicationTeacher {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Scanner input = new Scanner(System.in);
        QuestionSystem qs = new QuestionSystem();

        int userInput; 

        System.out.println("How much is " + qs.num1 + "times" + qs.num2 + "?"); 
        System.out.print("Enter your answer (-1 to quit) : ");
        userInput = input.nextInt();

            if (userInput == qs.answer(userInput)) { 
            System.out.print("Very Good!");
                    }
        else {
            System.out.print("No. Please try again");
        }

    }
}

这是我的方法类

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package multiplicationteacher;

import java.util.Random;

/**
 *
 * @author Jeremy Lai
 */
public class QuestionSystem {
    Random rand = new Random();

    public int num1;
    public int num2;
    public int answer;

    public int randNum1(int num1) {
        num1 = rand.nextInt();
        return num1;
    }

    public int randNum2 (int num2) {
        num2 = rand.nextInt();
        return num2;
    }

    public int answer (int answer) {
        answer = num1 * num2;
        return answer;
    }
}

提前致谢! :)

【问题讨论】:

    标签: java class oop methods random


    【解决方案1】:

    在您的整个代码中,您永远不会调用 randNum1randNum2 方法!所以它们没有生成!

    您可以使用构造函数,因此在创建QuestionSystem 的实例时会调用这些值。

    public QuestionSystem(){
        this.randNum1();
        this.randNum2();
    }
    

    此外,您的 randNum 方法中不必有任何返回值或参数:

    public void randNum1() {
        num1 = rand.nextInt();
    }
    

    或者,如果您只生成一次这些数字,您可以在 QuestionSystem 构造函数中包含所有内容:

    public QuestionSystem(){
        num1 = rand.nextInt();
        num2 = rand.nextInt();
    }
    

    此外,如果这是针对儿童的,请使用 range to nextInt 将值返回到可调整的大小:

    num1 = rand.nextInt(100); //returns values from 0 to 99
    

    【讨论】:

      【解决方案2】:

      您似乎既没有调用randNum1 也没有调用randNum2,因此您无法获得任何随机数-您只需获得初始化值(在Java 中为整数的0)。

      你可以添加构造函数

      public QuestionSystem(){
       this.randNum1();
       this.randNum2();
      }
      

      在您的QuestionSystem 班级中

      此外,您的 answer 方法不需要任何参数,所以

      public int answer (int answer) {
          answer = num1 * num2;
          return answer;
      }
      

      应该是

      public int answer () {
          answer = num1 * num2;
          return answer;
      }
      

      因此

      userInput == qs.answer(userInput)
      

      应该改成

      userInput == qs.answer()
      

      【讨论】:

        【解决方案3】:

        您必须在创建 QuestionSystem 类的实例后初始化随机数

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-02
          • 2010-11-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-07
          相关资源
          最近更新 更多