在我的程序中,生成了两个随机数。其中一个 (rbvalue) 介于 0 和 8 之间。另一个 (loadG4) 介于 0 和 9 之间。如果 rbvalue == 为 loadG4,它将被设置为 9。这样,两个数字永远不可能相等。由于某种原因,第一次单击按钮后代码存在缺陷(每次单击按钮后程序循环)。在代码中可能存在多余的不相关信息,无论如何我都会将其放入,以防与我们关注的随机生成和比较发生冲突。这是代码:
Random random = new Random();
int rbselector = random.nextInt(4); //These three are declared outside of onCreate.
int loadG4 = random.nextInt(10);
for (int allrbA = 0; allrbA < 4; allrbA++) {
int rbvalue = random.nextInt(9);
if (rbvalue == loadG4) {
rbvalue = 9;
}
selectrb[allrbA].setText("" + rbvalue);
}
selectrb[rbselector].setText("" + loadG4);
for (int allrbA = 0; allrbA < 4; allrbA++) {
selectrb[allrbA].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Button clicked = (Button)v;
String clickVal = (String)clicked.getText();
int finalClick = Integer.valueOf(clickVal);
if (finalClick == loadG4) {
score++;
for (int allrbA = 0; allrbA < 4; allrbA++) {
int rbvalue = random.nextInt(9);
loadG4 = random.nextInt(10);
if (rbvalue == loadG4) {
rbvalue = 9;
}
selectrb[allrbA].setText("" + rbvalue);
}
number.setText("" + loadG4);
rbselector = random.nextInt(4);
selectrb[rbselector].setText("" + loadG4);
}
}
});
}
提前非常感谢。
编辑:尝试不同的方法是行不通的。这已经过测试,看来问题一定来 self 的代码中的其他内容,但我不确定它是什么。
最佳答案
我不完全确定我是否理解你的问题,但我的理解是你有两个整数,你希望它们都是随机生成的,一个在 0 到 9 之间,另一个在 0 到 8 之间;这些数字永远不应该等于同一件事。另外,我在编写解决方案时假设 .nextInt() 是独占的,但是您应该在 java 文档中确认这一点。
这是我解决这个问题的方法:
Random r = new Random();
int a = r.nextInt(10);
int b = r.nextInt(9);
while(a==b)
b = r.nextInt(9);
这只是生成两个随机 int,如果它们彼此相等,将继续随机生成 int b 的值,直到它不等于 int a。
关于java - 为什么在我专门阻止这种情况后,一个随机 int 会变得与另一个随机 int 相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40833194/