如何随机选择多个数学问题的运算符并检查 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 循环,内部循环取决于外部循环计数器的当前值。希望对您有所帮助。