锁组合

时间:2010-11-18 18:28:25

标签: java

我有一些问题 构建组合的程序 锁。

我想构建一个Lock 用小锁 并为每个锁分配组合

打印时应如下所示:

Lock Combination
1        8-4
2        1-2
3        5-3
4        10-7
5        9-6

我可以构建锁的基本代码,如

public class mainLock {
    public static void main (String[] args) {
        System.out.println("Lock" + "   " + "Combination");

        int lock = 1;

        while (lock <=5) {
            System.out.println(" "+lock);
            lock = lock+1;
        }
    }
}
问题是我想要的 分配1-10随机组合 并且号码不应出现两次 正如您在打印视图中看到的那样。 所以当你启动程序时,它应该随机创建 组合5个锁具有2个唯一数字。

我知道为了做到这一点我可能需要 以这样的方式使用Random或Math.random()

(int)(Math.random()*10)+1 

想想我创建了一个我创建的类 两种不同梳子的方法 锁定

public class Combination {
    public int getComb() {
        int comb1, comb2;

        comb1 = (int)(Math.random()*5)+1;
        comb2 = (int)(Math.random()*5)+1;

创建我的随机数 但我不知道如何 以及如何分配给每个锁。

帮助会很有帮助!

2 个答案:

答案 0 :(得分:1)

您可以尝试创建包含数字的List,然后使用Collections.shuffle()对其重新排序。这将为您提供您正在寻找的随机行为,而无需重复数字。我没有测试过这个,但它应该可以工作:

ArrayList<Integer> digits = new ArrayList<Integer>();

for (int i = 1; i < 11; i++) {
    digits.add(Integer.valueOf(i));
}

Collections.shuffle(digits):

然后你就可以读出数字列表中的数字。

答案 1 :(得分:0)

看到这是家庭作业,使用你尚未在该课程中讨论的技术可能并不聪明。仅使用基本方法,您可以尝试创建一个数组来单独保存组合的每个值。每次为组合创建随机数后,请根据数组中的所有值进行检查。如果它是唯一的,请将其设置为组合的该部分的值。如果它不是唯一的,请提出另一个“随机”数字。这可能不是最优雅的解决方案,但至少它使用我猜测的方法围绕您的编程课程水平。