如何随机选择多个数学问题的运算符并检查 java 中的正确答案
How to random more than one math problems' operators and check the correct answer in java
import java.io.*;
public class AssignmentMT {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int number1, number2, number3, number4, number5;
double answer;
double geanswer = 0;
String word;
String operator = "";
int score=0, totalscore=10;
float percentage;
int intoperator;
word = br.readLine();
//Game Enhancement.
while (word.equals("Game Enhancement")){
System.out.println("Now you are in the game enhancement, be ready for your 4 level qustions. Write your answer after press enter.");
System.out.println("Press 'Go' to start!");
word = br.readLine();
while (!word.equals("Go")){
System .out.println("Please enter again.");
word = br.readLine();
}
while (word.equals("Go")){
System.out.println("-Level 1-");
number1 = (int) (Math.round (Math.random () * 9)+1);
number2 = (int) (Math.round (Math.random () * 9)+1);
intoperator = (int) (Math.round (Math.random () * 4)+1);
switch (intoperator) {
case 1:
operator = "+";
geanswer = number1+number2;
break;
case 2:
operator = "-";
geanswer = number1-number2;
break;
case 3:
operator = "×";
geanswer = number1*number2;
break;
case 4:
operator = "÷";
geanswer = (double)Math.round(((double)number1/(double)number2)*100)/100;
break;
default:
operator = "+";
geanswer = number1+number2;
break;
}
System.out.println( number1 + operator + number2 + "=");
answer = Double.parseDouble(br.readLine());
if(answer==geanswer){
score++;
}
System.out.println("Your Score: " + score);
System.out.println("-Level 2-");
for (int i=1;i<=2;i++){
number1 = (int) (Math.round (Math.random () * 9)+1);
number2 = (int) (Math.round (Math.random () * 9)+1);
number3 = (int) (Math.round (Math.random () * 9)+1);
intoperator = (int) (Math.round (Math.random () * 4)+1);
switch (intoperator) {
case 1:
operator = "+";
geanswer = number1+number2+number3;
break;
case 2:
operator = "-";
geanswer = number1-number2-number3;
break;
case 3:
operator = "×";
geanswer = number1*number2*number3;
break;
case 4:
operator = "÷";
geanswer = (double)Math.round(((double)number1/(double)number2/(double)number3)*100)/100;
break;
default:
operator = "+";
geanswer = number1+number2+number3;
break;
}
System.out.println( number1 + operator + number2 + operator + number3 + "=");
answer = Double.parseDouble(br.readLine());
if(answer == geanswer){
score++;
}
}
System.out.println("Your Score: " + score);
System.out.println("-Level 3-");
for (int i=1;i<=3;i++){
number1 = (int) (Math.round (Math.random () * 9)+1);
number2 = (int) (Math.round (Math.random () * 9)+1);
number3 = (int) (Math.round (Math.random () * 9)+1);
number4 = (int) (Math.round (Math.random () * 9)+1);
intoperator = (int) (Math.round (Math.random () * 4)+1);
switch (intoperator) {
case 1:
operator = "+";
geanswer = number1+number2+number3+number4;
break;
case 2:
operator = "-";
geanswer = number1-number2-number3-number4;
break;
case 3:
operator = "×";
geanswer = number1*number2*number3*number4;
break;
case 4:
operator = "÷";
geanswer = (double)Math.round(((double)number1/(double)number2/(double)number3/(double)number4)*100)/100;
break;
default:
operator = "+";
geanswer = number1+number2+number3+number4;
break;
}
System.out.println( number1 + operator + number2 + operator + number3 + operator + number4 + "=");
answer = Double.parseDouble(br.readLine());
if(answer == geanswer){
score++;
}
}
System.out.println("Your Score: " + score);
System.out.println("-Level 4-");
for (int i=1;i<=4;i++){
number1 = (int) (Math.round (Math.random () * 9)+1);
number2 = (int) (Math.round (Math.random () * 9)+1);
number3 = (int) (Math.round (Math.random () * 9)+1);
number4 = (int) (Math.round (Math.random () * 9)+1);
number5 = (int) (Math.round (Math.random () * 9)+1);
intoperator = (int) (Math.round (Math.random () * 4)+1);
switch (intoperator) {
case 1:
operator = "+";
geanswer = number1+number2+number3+number4+number5;
break;
case 2:
operator = "-";
geanswer = number1-number2-number3-number4-number5;
break;
case 3:
operator = "×";
geanswer = number1*number2*number3*number4*number5;
break;
case 4:
operator = "÷";
geanswer = (double)Math.round(((double)number1/(double)number2/(double)number3/(double)number4/(double)number5)*100)/100;
break;
default:
operator = "+";
geanswer = number1+number2+number3+number4+number5;
break;
}
System.out.println( number1 + operator + number2 + operator + number3 + operator + number4 + operator + number5 + "=");
answer = Double.parseDouble(br.readLine());
if(answer == geanswer){
score++;
}
}
percentage = (float)((score*100)/totalscore);
System.out.println("Your total Score: " + score);
System.out.println(" ");
System.out.println("Your got " + percentage + "% mark! Congratulation!");
System.out.println("Please enter Quit to end.");
word = br.readLine();
if (word.equals("Quit")){
System.out.println(" ");
System.out.println("That's the end of the contest. Thank you!");
}
}
}
}
}
大家好,我是一名高中生。现在我在学校读 11 年级的计算机科学。
问题是,如您所见,老师要求进行数学竞赛程序。
他说我们至少需要做10个关卡。
级别 1 有一个随机运算符。
2 级有两个随机运算符
...等等。
此外,每次参与者回答正确,he/she 将获得一个分数,这意味着我必须写一些东西来检查正确答案。我知道我需要使用 for 循环来完成十个级别,事实是我已经尝试过但我不能......我快疯了。
请帮助我.....感谢阅读!!!
您应该将问题分解为以下几点:
- 对于每个级别,您首先需要生成正确数量的随机整数,您将在这些整数上执行操作。 (对于第 i 级,i+1 个整数)
- 接下来,您需要为级别 i 生成 i 个运算符。
所以本质上,您应该考虑嵌套的 for 循环,内部循环取决于外部循环计数器的当前值。希望对您有所帮助。
import java.io.*;
public class AssignmentMT {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int number1, number2, number3, number4, number5;
double answer;
double geanswer = 0;
String word;
String operator = "";
int score=0, totalscore=10;
float percentage;
int intoperator;
word = br.readLine();
//Game Enhancement.
while (word.equals("Game Enhancement")){
System.out.println("Now you are in the game enhancement, be ready for your 4 level qustions. Write your answer after press enter.");
System.out.println("Press 'Go' to start!");
word = br.readLine();
while (!word.equals("Go")){
System .out.println("Please enter again.");
word = br.readLine();
}
while (word.equals("Go")){
System.out.println("-Level 1-");
number1 = (int) (Math.round (Math.random () * 9)+1);
number2 = (int) (Math.round (Math.random () * 9)+1);
intoperator = (int) (Math.round (Math.random () * 4)+1);
switch (intoperator) {
case 1:
operator = "+";
geanswer = number1+number2;
break;
case 2:
operator = "-";
geanswer = number1-number2;
break;
case 3:
operator = "×";
geanswer = number1*number2;
break;
case 4:
operator = "÷";
geanswer = (double)Math.round(((double)number1/(double)number2)*100)/100;
break;
default:
operator = "+";
geanswer = number1+number2;
break;
}
System.out.println( number1 + operator + number2 + "=");
answer = Double.parseDouble(br.readLine());
if(answer==geanswer){
score++;
}
System.out.println("Your Score: " + score);
System.out.println("-Level 2-");
for (int i=1;i<=2;i++){
number1 = (int) (Math.round (Math.random () * 9)+1);
number2 = (int) (Math.round (Math.random () * 9)+1);
number3 = (int) (Math.round (Math.random () * 9)+1);
intoperator = (int) (Math.round (Math.random () * 4)+1);
switch (intoperator) {
case 1:
operator = "+";
geanswer = number1+number2+number3;
break;
case 2:
operator = "-";
geanswer = number1-number2-number3;
break;
case 3:
operator = "×";
geanswer = number1*number2*number3;
break;
case 4:
operator = "÷";
geanswer = (double)Math.round(((double)number1/(double)number2/(double)number3)*100)/100;
break;
default:
operator = "+";
geanswer = number1+number2+number3;
break;
}
System.out.println( number1 + operator + number2 + operator + number3 + "=");
answer = Double.parseDouble(br.readLine());
if(answer == geanswer){
score++;
}
}
System.out.println("Your Score: " + score);
System.out.println("-Level 3-");
for (int i=1;i<=3;i++){
number1 = (int) (Math.round (Math.random () * 9)+1);
number2 = (int) (Math.round (Math.random () * 9)+1);
number3 = (int) (Math.round (Math.random () * 9)+1);
number4 = (int) (Math.round (Math.random () * 9)+1);
intoperator = (int) (Math.round (Math.random () * 4)+1);
switch (intoperator) {
case 1:
operator = "+";
geanswer = number1+number2+number3+number4;
break;
case 2:
operator = "-";
geanswer = number1-number2-number3-number4;
break;
case 3:
operator = "×";
geanswer = number1*number2*number3*number4;
break;
case 4:
operator = "÷";
geanswer = (double)Math.round(((double)number1/(double)number2/(double)number3/(double)number4)*100)/100;
break;
default:
operator = "+";
geanswer = number1+number2+number3+number4;
break;
}
System.out.println( number1 + operator + number2 + operator + number3 + operator + number4 + "=");
answer = Double.parseDouble(br.readLine());
if(answer == geanswer){
score++;
}
}
System.out.println("Your Score: " + score);
System.out.println("-Level 4-");
for (int i=1;i<=4;i++){
number1 = (int) (Math.round (Math.random () * 9)+1);
number2 = (int) (Math.round (Math.random () * 9)+1);
number3 = (int) (Math.round (Math.random () * 9)+1);
number4 = (int) (Math.round (Math.random () * 9)+1);
number5 = (int) (Math.round (Math.random () * 9)+1);
intoperator = (int) (Math.round (Math.random () * 4)+1);
switch (intoperator) {
case 1:
operator = "+";
geanswer = number1+number2+number3+number4+number5;
break;
case 2:
operator = "-";
geanswer = number1-number2-number3-number4-number5;
break;
case 3:
operator = "×";
geanswer = number1*number2*number3*number4*number5;
break;
case 4:
operator = "÷";
geanswer = (double)Math.round(((double)number1/(double)number2/(double)number3/(double)number4/(double)number5)*100)/100;
break;
default:
operator = "+";
geanswer = number1+number2+number3+number4+number5;
break;
}
System.out.println( number1 + operator + number2 + operator + number3 + operator + number4 + operator + number5 + "=");
answer = Double.parseDouble(br.readLine());
if(answer == geanswer){
score++;
}
}
percentage = (float)((score*100)/totalscore);
System.out.println("Your total Score: " + score);
System.out.println(" ");
System.out.println("Your got " + percentage + "% mark! Congratulation!");
System.out.println("Please enter Quit to end.");
word = br.readLine();
if (word.equals("Quit")){
System.out.println(" ");
System.out.println("That's the end of the contest. Thank you!");
}
}
}
}
}
大家好,我是一名高中生。现在我在学校读 11 年级的计算机科学。 问题是,如您所见,老师要求进行数学竞赛程序。 他说我们至少需要做10个关卡。 级别 1 有一个随机运算符。 2 级有两个随机运算符 ...等等。 此外,每次参与者回答正确,he/she 将获得一个分数,这意味着我必须写一些东西来检查正确答案。我知道我需要使用 for 循环来完成十个级别,事实是我已经尝试过但我不能......我快疯了。
请帮助我.....感谢阅读!!!
您应该将问题分解为以下几点:
- 对于每个级别,您首先需要生成正确数量的随机整数,您将在这些整数上执行操作。 (对于第 i 级,i+1 个整数)
- 接下来,您需要为级别 i 生成 i 个运算符。
所以本质上,您应该考虑嵌套的 for 循环,内部循环取决于外部循环计数器的当前值。希望对您有所帮助。