在随机方法中测试特定数字时,我得到了混合结果

时间:2017-10-04 04:47:58

标签: java

在测试这两种方法时,我得到了混合的结果。有时,在测试时,应该为false的值为true,反之亦然。我已经尝试在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());
    }

2 个答案:

答案 0 :(得分:4)

致电时

 System.out.println(g.Roll());
 System.out.println(g.checkRoll());

你实际上运行你的滚动功能TWICE。 (如果你计算在IF / OR中调用它,则为3次)所以你打印的数字与之后在g.checkroll中测试的数字不同(因为它通过调用你的Roll来滚动一个新的数字),所以打印“true”或“false”与早期的数字无关。将checkRoll函数作为子函数放入Roll函数中,或者在测试之前使用一些全局变量存储Roll,而不是重新滚动它。

答案 1 :(得分:0)

考虑到评论,并感谢所有

public int Roll() {
        return ran.nextInt(10) + 1;
    }

    public boolean checkRoll(int num) {

        int temp;
        temp = num;
        if(temp == 1 || temp == 5) {
            return true;
        }
        return false;
}
public static void main(String [] args ) {


        Game g = new Game() ;

        int roll = g.Roll();
                System.out.println(roll);
                System.out.println(g.checkRoll(roll));
    }