我正在尝试解决旧的密码锁程序。问题如下。我已经编写了一些代码,但到目前为止它只打印了一堆可能的组合,这些组合总是包含第一个数字有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;
}
}
}
答案 0 :(得分:1)
您的程序运行正常。我的猜测是发生的事情是BlueJ限制了控制器的大小。转到Options
并启用Unlimited Buffering
。这应该允许您查看所有可能的组合。如果您对其进行调试并逐行逐步执行,则会看到正在输出所有组合,但由于显示的行数限制,它看起来好像第一个数字总是36,因为您只得到最后这么多行。
旁注:你永远不会使用传递给组合()的int组合参数,所以如果我是你,我会删除它。