A.J*_*.J. 0 java random variables class
我的程序运行得很好,除了我为数学游戏中的问题生成的随机数始终为零.我不明白.我尝试过使用math.random,我遇到了同样的问题.它在做什么?
import java.util.Scanner;
import java.util.Random;
public class Problem {
private int numberOfQuestions;
private int answer;
private int userAnswer;
private int score;
private int max;
private int min;
private static String question;
Random rand = new Random();
Scanner input = new Scanner(System.in);
private int num1 = rand.nextInt((max - min) + 1) + min;
private int num2 = rand.nextInt((max - min) + 1) + min;
public Problem(int max, int min, int numberOfQuestions){
this.max = max;
this.min = min;
this.numberOfQuestions = numberOfQuestions;
}
public int multiplyNumbers()
{
answer = num1 * num2;
return answer;
}
public String multiplyQuestion(){
String sum = ("What is " + num1 + " * " + num2 + "?");
return sum;
}
public int addNumbers()
{
answer = num1 + num2;
return answer;
}
public String addQuestion(){
String sum = ("What is " + num1 + " + " + num2 + "?");
return sum;
}
public int subtractNumbers()
{
answer = num1 - num2;
return answer;
}
public String subtractQuestion(){
String sum = ("What is " + num1 + " - " + num2 + "?");
return sum;
}
public int divideNumbers()
{
answer = num1 / num2;
return answer;
}
public String divideQuestion(){
String sum = ("What is " + num1 + " / " + num2 + "?");
return sum;
}
public String answer(int min, int max, int numberOfQuestions){
int operator = (int)(Math.random()*4) + 1;
if(operator == 1){
question = addQuestion();
answer = addNumbers();
} else if(operator == 2) {
question = subtractQuestion();
answer = subtractNumbers();
} else if(operator == 3) {
question = divideQuestion();
answer = divideNumbers();
} else if(operator == 4) {
question = multiplyQuestion();
answer = multiplyNumbers();
}
System.out.println(question);
userAnswer = input.nextInt();
System.out.println(answer);
String result;
int score = 0;
if(userAnswer == answer){
score = score + 1;
result = "Correct. Score is currently: " + score + "/" + numberOfQuestions;
} else {
score = score - 1;
result = "Incorrect. Score is currently: " + score + "/" + numberOfQuestions;
}
return result;
}
public String toString(){
return "Math game~!" + answer(min, max, numberOfQuestions);
}
}
Run Code Online (Sandbox Code Playgroud)
Sot*_*lis 10
实例字段初始化表达式在构造函数体之前执行.所以
private int num1 = rand.nextInt((max - min) + 1) + min;
Run Code Online (Sandbox Code Playgroud)
之前执行
this.max = max;
this.min = min;
Run Code Online (Sandbox Code Playgroud)
在构造函数中.
在这一点上,价值max
和min
因此是默认的0
.移动的初始化语句num1
到构造体,对分配后,max
和min
.
归档时间: |
|
查看次数: |
112 次 |
最近记录: |