java - -滚动 2 个骰子直到得到 SnakeEyes-我的逻辑有什么问题以及如何打印方法的最后结果而不再次调用它
问题描述
这是一项家庭作业,我必须编写 2 个不断滚动的骰子,并且只有在两个骰子都获得 SnakeEyes 时才会停止。我有两个问题:
- 有时 CastDie1 和 CastDie2 返回 1 但 IF 语句不验证条件。
我想打印出每个结果,包括 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; } } } }
解决方案
将方法调用的结果存储在变量中。打印变量的值,然后检查它是否是蛇眼。
此外,不需要有两个单独的 CastDie 方法;他们做同样的事情。
推荐阅读
- java - 如何为嵌套的 Java 类创建构造函数/构建器?
- php - 从选择中计数并使用连接访问两个表
- javascript - React.ChangeEvent
转换为字符串 [] - ansible - jinja模板的变量整数和增量值的Ansible循环
- python - TypeError:强制转换为 Unicode:需要字符串或缓冲区,找到 datetime.timedelta
- c++ - 将 C++ std::vector push_back() 或 insert() 与 nothrow 一起使用
- google-tag-manager - 如何从 URL 中删除 PII(带有 GTM 的 GA4)
- ruby-on-rails - CarrierWave 图像质量差
- powershell - 无法在 Powershell 中删除变量
- python - 检查字段是否为“无”的条件未按预期工作