首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

锁组合
EN

Stack Overflow用户
提问于 2010-11-19 02:28:25
回答 2查看 1.1K关注 0票数 1

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

我想构建一个锁与小锁,并分配给每个锁的组合

打印时应如下所示:

代码语言:javascript
运行
复制
Lock Combination
1        8-4
2        1-2
3        5-3
4        10-7
5        9-6

我可以像这样构造锁的基本代码吗

代码语言:javascript
运行
复制
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()

代码语言:javascript
运行
复制
(int)(Math.random()*10)+1 

假设我创建了一个类,其中为每个锁的2个不同的梳子创建了一个方法

代码语言:javascript
运行
复制
public class Combination {
    public int getComb() {
        int comb1, comb2;

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

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

帮助是非常有用的!

EN

回答 2

Stack Overflow用户

发布于 2010-11-19 02:37:43

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

代码语言:javascript
运行
复制
ArrayList<Integer> digits = new ArrayList<Integer>();

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

Collections.shuffle(digits):

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

票数 1
EN

Stack Overflow用户

发布于 2010-11-19 03:59:35

既然这是家庭作业,那么使用你在该课程中还没有讨论过的技术可能并不明智。只使用基本方法,您可以尝试创建一个数组来分别保存组合的每个值。每次为组合创建随机数后,根据数组中的所有值对其进行检查。如果它是唯一的,则将其设置为该组合部分的值。如果它不是唯一的,就想出另一个“随机”数字。这可能不是最优雅的解决方案,但至少它使用的方法与我猜测的编程课程水平大致相同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4218223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档