Java 将随机数传递到对象的实例中

Java 将随机数传递到对象的实例中,java,variables,math,random,Java,Variables,Math,Random,我的家庭作业是让我做一个数学游戏,在这个游戏中,我提示用户回答数学问题,然后向他们展示答案。我已经创建了MathGame类,但是当我创建MathGame的实例时,它要求我输入两个整数,我不知道,因为我试图随机生成它们 问题:如何将类中的随机数传递到MathGame的实例中 下面是MathGame类 下面是我想弄清楚的MathGame实例的主要部分 import java.util.Random; public class MathGame { private int operand1

我的家庭作业是让我做一个数学游戏,在这个游戏中,我提示用户回答数学问题,然后向他们展示答案。我已经创建了
MathGame
类,但是当我创建
MathGame
的实例时,它要求我输入两个整数,我不知道,因为我试图随机生成它们

问题:如何将类中的随机数传递到
MathGame
的实例中

下面是
MathGame

下面是我想弄清楚的
MathGame
实例的主要部分

import java.util.Random;

public class MathGame {

    private int operand1;
    private int operand2;
    private int solution;

    public MathGame(int operand1, int operand2) {
        this.operand1 = operand1;
        this.operand2 = operand2;
    }

    public int genRandom1() {
        Random rand = new Random();
        int randNum = rand.nextInt(0) + 20;
        randNum = operand1;
        return operand1;
    }

    public int genRandom2() {
        Random rand = new Random();
        int randNum2 = rand.nextInt(0) + 20;
        randNum2 = operand2;
        return operand2;
    }

    public int getoperand1() {
        return operand1;
    }

    public int getoperand2() {
        return operand2;
    }

    public String question() {
        return "What is" + operand1 + operand2 + "?";
    }

    public String solution() {
        int solution = operand1 + operand2;
        return "The correct answer is: " + solution;
    }

}
我在MathGame的实例中得到一个错误,因为我需要通过两个整数,但是我不知道这些整数,因为它们应该是随机生成的,这是我在课堂上做的

import java.util.Scanner;

public class MathGameMain {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        MathGame game1 = new MathGame();
    }

}

您可能希望更改为以下内容:

import java.util.Random;                                                     


public class MathGame {                                                      

  private int operand1;                                                      
  private int operand2;                                                      
  private int solution;                                                      

  public MathGame ()                                                         
  {                                                                          
    this.operand1 = getRandom();                                             
    this.operand2 = getRandom();                                             
  }                                                                          

  public int getRandom()                                                     
  {                                                                          
    Random rand = new Random();                                              
    int randNum = rand.nextInt(20);                                          
    return randNum;                                                          
  }                                                                          

  public int getoperand1()                                                   
  {                                                                          
    return operand1;                                                         
  }                                                                          

  public int getoperand2()                                                   
  {                                                                          
    return operand2;                                                         
  }                                                                          

  public String question()                                                   
  {                                                                          
    return "What is" + operand1 + " + " + operand2 + "?";                    
  }                                                                          

  public String solution()                                                   
  {                                                                          
    int solution = operand1 + operand2;                                      
    return "The correct answer is: " + solution;                             
  }                                                                          

}      

您应该在MathGame初始化时生成随机数。如果要随机生成数字,则无需传递数字。

此方法需要什么

public int genRandom1()
{
    Random rand = new Random();
    int randNum = rand.nextInt(0) + 20;
    randNum = operand1;
    return operand1;
}


您创建了一个进程并将其存储到randNum,但在方法中返回的是operans2。只需返回randNum即可。

这是我从您的评论中得到的

  • 调用Main类上的MathGame对象,MathGame的构造函数返回存储在操作数1和操作数2上的2个随机数

  • 程序将通过将操作数1与操作数2相加得到一个数字

  • 解决方案

    import java.util.Random;
    
    public class MathGame {
    
        private int operand1;
        private int operand2;
        private int solution;
    
        public MathGame ()
        {
            this.operand1 = genRandom();
            this.operand2 = genRandom();
        }
    
        public int genRandom()
        {
            Random rand = new Random();
    
            int randNum = rand.nextInt(0) + 20;
    
            return randNum;
        }
    
        public String question()
        {
            return "What is" + this.operand1 + " + " + this.operand2 + "?";
        }
    
        public String solution()
        {
            int solution = operand1 + operand2;
    
            return "The correct answer is: " + solution;
        }
    
    }
    
    主课

    import java.util.Scanner;
    
    
    public class MathGameMain {
    
        public static void main(String[] args) {
            MathGame game1 = new MathGame();
    
            //question
            System.out.println(game1.question());
    
            // solution
            System.out.println(game1.solution());
        }
    
    }
    

    您没有默认构造函数。默认构造函数没有参数,需要实例化所需的实例。在方法
    genRandom1
    中,在生成随机值并将其保存在
    randNum
    中后,您将
    randNum
    设置为
    operator 1
    的值,从而丢失该值。我相信您要做的是
    operan1=randNum
    genRandom2
    方法也是如此。既然
    operando1
    operando2
    是您不知道其值的整数,
    public String question()
    read
    中的单行是否应该返回“What is”+operando1+“+”+operando2+?”?目前,它看起来好像将两个数字相加成一个数字。或者,只需使用适当的构造函数调用MathGame即可:
    MathGame game1=new MathGame(random1,random2)@markspace但这不起作用,因为我需要在构造函数中包含两个int。但我希望所有操作都在类中完成,而不是在main中完成。我只想使用这些方法生成随机数,以便它们可以在main中使用。然而,我的问题是,当我创建MathGame实例时,我需要在contractor中放入两个int,我希望这些int通过类随机生成。如果这有道理的话。
    
    import java.util.Scanner;
    
    
    public class MathGameMain {
    
        public static void main(String[] args) {
            MathGame game1 = new MathGame();
    
            //question
            System.out.println(game1.question());
    
            // solution
            System.out.println(game1.solution());
        }
    
    }