如何在java中使两个随机生成的整数可以被彼此整除?

问题描述 投票:0回答:2

我是一个新手,试图在我的android studio项目中编写一个java代码来生成两个最多100(包括在内)的随机整数,我实际上想做的是检查第一个随机整数是否大于第二个随机整数整数,我还想检查第一个 rand.num 是否。可以被第二个 rand.num 整除。

到目前为止,我能够生成两个兰特。 OnCreate 方法中使用 Math.random() 获取 nums:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Objects.requireNonNull(getSupportActionBar()).hide();
    setContentView(R.layout.activity_division);

    randomFirstNum = (int) (Math.random() * 100 + 1);
    randomSecondNum = (int) (Math.random() * 100 + 1);

我正在尝试编写两个函数。

第一个功能是根据 rand 生成问题字符串。整数。即

    private void generateQuestion(int randomFirstNum, int randomSecondNum) {
        String firstNum = String.valueOf(randomFirstNum);
        String secondNum = String.valueOf(randomSecondNum);
        String question = null;
    
        if(randomFirstNum % randomSecondNum == 0 && randomFirstNum > randomSecondNum){
            question = firstNum + " ÷ " + secondNum + " = ?";
        } else if(randomSecondNum % randomFirstNum == 0 && randomSecondNum > randomFirstNum){
            question = secondNum + " ÷ " + firstNum + " = ?";
        }
    
        textViewQuestion.setText(question);
}

下一个函数是求除法题的结果。即

private int findResult(int randomFirstNum, int randomSecondNum) {
    if (randomFirstNum > randomSecondNum && randomFirstNum % randomSecondNum == 0){
        return randomFirstNum / randomSecondNum;
    } else if {(randomSecondNum > randomFirstNum && randomSecondNum % randomFirstNum == 0)
        return randomSecondNum / randomFirstNum;
    }
}

我知道代码不正确并且缺少部分,我只是被困在这里。但我希望我能够解释一下我的问题。我希望能够生成一个问题,其中第一个 rand.integer 将大于第二个 rand.integer 或等于屏幕上的第二个 rand.integer (即“20 ÷ 2 = ?”或“21 ÷ 7” = ?" 或 11 ÷ 11 = ? - 两个 rand. 整数可能是相同的数字:)

我只是陷入了如果两个整数都是奇数该怎么办的问题(即“17 ÷ 11 = ?”我不想以此类问题告终:)

如果有人能解答我的问题并希望为我提供明确的答案,我将不胜感激! :) 非常感谢您留下来并花时间阅读我的问题。

java android-studio random division
2个回答
1
投票

第一个数字可以在没有任何限制的情况下生成,但为了满足第一个数字必须可被第二个数字整除并且第一个数字> =第二个数字的要求,您有一个限制,即第二个数字必须是第一个数字的除数,因为它将满足这两个要求.

因此,您可以生成从 1 到 100 的第一个数字,无论该数字是什么,找出它的除数并从除数列表中随机选择一个除数。

private static void generateQuestion() {
       int first = (int) (Math.random() * 100 + 1);
       List<Integer> firstNumDivisors = getDivisors(first);
       
       int divisorsRandIndex = (int) (Math.random() * firstNumDivisors.size());
       int second = firstNumDivisors.get(divisorsRandIndex);

    System.out.println(first + " " + second);
    // Create your question from first and second numbers here
}

private static List<Integer> getDivisors(int number) {
    List<Integer> divisors = new ArrayList<>();

    for (int i=1;i<=number;i++) 
        if (number%i==0) 
            divisors.add(i);
            
    return divisors;
 }

0
投票

嗨,我不确定这是否有帮助,但是

创建一个函数来显示您的问题,如果您希望第一个操作数产生比第二个操作数更高的 int,您可以使用它吗?

document.getElementById("操作数1").textContent = 操作数1 > 操作数2 ?操作数 1 : 操作数 2; document.getElementById("操作数2").textContent = 操作数1 > 操作数2 ?操作数2:操作数1; document.getElementById('operator').textContent = "-";

© www.soinside.com 2019 - 2024. All rights reserved.