问题描述
我是一个新手,并试图在我的 android studio 项目中编写一个 java 代码来生成两个最大为 100(包括)的随机整数,我实际要做的是检查第一个随机整数是否大于第二个随机整数,我也想检查第一个rand.num。可以被第二个 rand.num 整除。
到目前为止,我能够生成两个兰特。 nums 在 OnCreate 方法中使用 Math.random():
@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);
我正在尝试编写两个函数。
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 = ?”),我只是不知道该怎么做,我不想以此类问题结束:)
如果有人能对我的问题有所了解并希望为我提供明确的答案,我将不胜感激! :) 非常感谢您留下来并花时间阅读我的问题。
解决方法
第一个数字可以在没有任何限制的情况下生成,但为了满足第一个数字必须能被第二个数字整除且第一个数字>=第二个数字要求,您有一个限制,即第二个数字必须是第一个数字的除数,因为它将满足两个要求。
所以你可以生成从 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;
}