0

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

提前致谢!:)

4

3 回答 3

1

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

您可以添加构造函数

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()
于 2013-10-13T12:12:49.010 回答
1

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

您可以使用构造函数,因此在创建实例时会调用这些值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
于 2013-10-13T12:15:32.683 回答
0

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

于 2013-10-13T12:12:57.037 回答