首页 > 解决方案 > -滚动 2 个骰子直到得到 SnakeEyes-我的逻辑有什么问题以及如何打印方法的最后结果而不再次调用它

问题描述

这是一项家庭作业,我必须编写 2 个不断滚动的骰子,并且只有在两个骰子都获得 SnakeEyes 时才会停止。我有两个问题:

  1. 有时 CastDie1 和 CastDie2 返回 1 但 IF 语句不验证条件。
  2. 我想打印出每个结果,包括 Snake Eyes,但是每当我尝试打印 SnakeEyes 结果时,都会再次调用该方法并且数字会发生变化。

    public class SnakeEyesCount {
    
    /**
    * @param args the command line arguments
    * @return 
    */
    public static int CastDie1() {
        int die1 = (int)(Math.random()*6)+1;
        return die1;
    }
    
    public static int CastDie2() {
        int die2 = (int)(Math.random()*6)+1;
        return die2;
    }
    
    public static void main(String[] args) {
        // TODO code application logic here
        int countSnakeEyes = 0;
        boolean snakeEyes = false;
    
        while (snakeEyes == false) {
            TextIO.putln("Die1: " + CastDie1());
            TextIO.putln("Die2: " + CastDie2());
            countSnakeEyes++;
            if (CastDie1() == 1 && CastDie2() == 1) {
                TextIO.putln("Die1: " + CastDie1() + " SNAKE EYES!");
                TextIO.putln("Die2: " + CastDie2() + " SNAKE EYES!");
                TextIO.putln("Snake Eyes after " + countSnakeEyes + " rolls of the dice");
                snakeEyes= true;
            }
        }
    }
    }
    

标签: java

解决方案


将方法调用的结果存储在变量中。打印变量的值,然后检查它是否是蛇眼。

此外,不需要有两个单独的 CastDie 方法;他们做同样的事情。


推荐阅读