繁体   English   中英

锁组合

[英]Lock combination

我在构造用于密码锁的程序时遇到一些问题。

我想用小锁构造一个锁,并为每个锁分配组合

打印时应如下所示:

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;

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

帮助将不胜感激!

您可以尝试创建一个包含数字的列表,然后使用Collections.shuffle()重新排序。 这将为您提供所需的随机行为,而无需重复数字。 我没有测试过,但是应该可以工作:

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

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

Collections.shuffle(digits):

然后,您可以只从数字列表中读取数字。

既然这是家庭作业,那么使用尚未在该课程中讨论过的技术可能并不明智。 仅使用基本方法,您可以尝试创建一个数组以分别保存组合的每个值。 每次为组合创建一个随机数后,都要对照数组中的所有值检查它。 如果它是唯一的,请将其设置为组合中该部分的值。 如果不是唯一的,请提出另一个“随机”数字。 这可能不是最优雅的解决方案,但至少我使用的方法与您的编程课程工作水平有关。

暂无
暂无

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

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