在测试这两种方法时,我得到的结果好坏参半。有时,在测试时,本应为假的值却为真,反之亦然。我尝试在 Roll 方法中返回一个数字,并且在测试时效果很好。
public class Game {
public int Roll() {
return ran.nextInt(10) + 1;
}
public boolean checkRoll() {
boolean check;
if(Roll() == 1 || Roll() == 5) {
check = true;
}
else {
check = false;
}
return check;
}
public static void main(String [] args ) {
Game g = new Game();
System.out.println(g.Roll());
System.out.println(g.checkRoll());
}
最佳答案
当你打电话时
System.out.println(g.Roll());
System.out.println(g.checkRoll());
你实际上运行了两次滚动函数。 (如果你算上在 IF/OR 中调用它,则为 3 次)所以你打印的数字与你稍后在 g.checkroll 中测试的数字不同(因为它通过调用你的 Roll 来滚动一个新数字),所以“true”或“false”打印与之前的号码无关。要么将 checkRoll 函数作为子函数放入 Roll 函数中,要么使用一些全局变量在测试之前存储 Roll,而不是重新滚动它。
关于java - 在随机方法中测试特定数字时,我得到的结果好坏参半,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46557219/