繁体   English   中英

密码锁

[英]Combination lock code

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

“想象一下,您需要打开标准的密码锁,但不知道密码锁,也没有一对断线钳。用可以打印所有可能密码锁的方法在BlueJ中编写Java程序,以便您可以将密码打印在键盘上。试一试,假设每个表盘上的数字都在0到36之间,依次打开需要三个数字,假设锁不是一个很好的锁每个数字与正确数字相差不超过2的数字也可以使用,换句话说,如果组合为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;
                }
    }
}

您的程序运行正常。 我的猜测是,BlueJ限制了consol的大小。 转到Options ,然后打开Unlimited Buffering 这应该允许您查看所有可能的组合。 如果您对其进行调试并逐行进行调试,则会看到正在输出所有组合,但是由于显示的行数有限,因此似乎第一个数字始终为36,因为您只能得到最后这么多的行。

旁注:永远不要使用传递给groups()的int combo参数,因此如果我是我,只需将其删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM