Java随机数问题。

时间:2013-10-13 12:07:49

标签: java class oop methods random

我是文凭学生,目前是编程和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;
    }
}

提前致谢! :)

3 个答案:

答案 0 :(得分:1)

您似乎既不会调用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()

答案 1 :(得分: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到nextInt将值返回到可重新计算的大小:

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

答案 2 :(得分:0)

在创建QuestionSystem类的实例

后,必须初始化随机数