我是文凭学生,目前是编程和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;
}
}
提前致谢! :)
答案 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)
在整个代码中,您永远不会调用randNum1
和randNum2
方法!所以它们不是生成的!
您可以使用构造函数,因此在创建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类的实例
后,必须初始化随机数