【问题标题】:Combination lock code密码锁密码
【发布时间】:2018-04-21 11:11:29
【问题描述】:

我正在尝试解决旧的密码锁程序。问题如下。我已经写了一些代码,但到目前为止,它只打印了一堆可能的组合,这些组合总是包含第一个数字为 36。老实说,我对将它放在需要的位置感到非常困惑。

“假设您需要打开一个标准的密码拨号锁,但不知道密码,也没有一把断线钳。在 BlueJ 中编写一个 Java 程序,其方法可以打印所有可能的密码组合,以便您可以打印把它们写在一张纸上,一边试一边核对一下。假设每个刻度盘上的数字范围是从零到三十六,打开锁需要三个顺序的数字。假设锁不是很好一个和每个数字中与正确数字相差不超过两个的任何数字也可以使用。换句话说,如果组合是 17-6-32,那么 18-5-31、19-4-32、15-8 -33 和许多其他组合也将打开锁。编写另一种方法,打印出您需要尝试确保打开锁的最小组合列表。"

     /**
     * A method that prints all possible combinations of the lock.
     */
    public void combination(int combo)
    {
        int a;
        int b;
        int c;
        a = 0;
        while (a <= 36)
                {b = 0;
                while (b <= 36)
                    {c = 0;
                    while (c <= 36)
                    {
                        System.out.println(a + " " + b + " " + c);
                        c = c + 1;
                    }
                    b = b + 1;
                }
                a = a + 1;
                }
    }
}

【问题讨论】:

  • 我认为 while 循环是 36 总是在第一位的问题?

标签: java bluej


【解决方案1】:

您的程序运行良好。我的猜测是 BlueJ 限制了控制台大小。转到Options 并打开Unlimited Buffering。这应该允许您查看所有可能的组合。如果您调试它并逐行执行,您会看到所有组合都在输出,但是由于显示行数的限制,它看起来好像第一个数字始终是 36,因为您只得到最后这么多行。

旁注:你从不使用传递给combinations()的int combo参数,所以如果我是你,我会删除它。

【讨论】:

  • 我仍然对最后一点感到完全困惑。 “编写另一种方法,打印出您需要尝试确保打开锁的最小组合列表。”
  • 对不起,我不完全理解...很可能是因为我整天都在努力学习:/我已经完成了第二部分,所有组合都在组合的 2 位数之内,我的变化起始值为 2,添加值为 ++3;。我只是绞尽脑汁想办法打印出一个极简的组合列表。
  • 我想这就是为什么我可能会感到困惑。哈哈 它说在二离一之后再创建一种方法。 “编写另一种方法,打印出您需要尝试确保打开锁的最小组合列表。”
  • 正确。现在我需要第三种方法来打印出一个极简主义列表。我试图弄清楚,但现在考虑到其他两种方法,我开始认为这是一个毫无意义的问题。
  • 好吧,我想我自己弄糊涂了哈哈。非常感谢您花时间帮助我。对编程还是很陌生,但它很有趣!
猜你喜欢
  • 1970-01-01
  • 2016-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
相关资源
最近更新 更多