我正在尝试解决旧的密码锁程序。问题如下。我已经编写了一些代码,但到目前为止它只打印一堆可能的组合,这些组合始终包含第一个数字为 36。说实话,我非常困惑如何将其到达需要的位置。
“想象一下,您需要打开一个标准密码拨号锁,但不知道密码,也没有一把断线钳。在 BlueJ 中编写一个 Java 程序,使用打印所有可能组合的方法,以便您可以打印将它们写在一张纸上,并在尝试时核对每一个。假设每个表盘上的数字范围从零到三十六,并且需要连续三个数字才能打开锁。假设锁不是很好1 以及每个数字中距离正确数字不超过 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 限制了控制台大小。转到选项
并启用无限缓冲
。这应该可以让您看到所有可能的组合。如果您调试它并逐行单步执行它,您会看到所有组合都被输出,但由于显示行数的限制,第一个数字似乎始终是 36,因为您只能得到最后这么多行。
旁注:您从不使用传递给combinations() 的int 组合参数,所以如果我是您,我会删除它。
关于java - 组合锁密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49955152/