【问题标题】:check unrepeated random number检查不重复的随机数
【发布时间】:2019-04-28 09:48:56
【问题描述】:

我有一个返回数字的方法:

  public String getNum()
   {
    Random random = new Random();
    return random.nextInt(1000) + "";
   }

我有这个存储对象的方法

public void store(User user)
{
  String str = getNum();
  user.setIdCode(str);
  for (User users: userList)
  { 
    if(users.getId() == user.getId())
{
user.setIdCode(getNum);
}

  }

}

如果 Id 兴奋,则重新设置 id。这肯定会检查 id 第一次是否存在,但第二次设置 id 怎么样。有可能重复相同的数字。同时我们不能进入无限循环。

【问题讨论】:

  • @stdunbar 我认为 OP 并不是在问为什么会出错,他更关心的是如果将重复的 id 提供给另一个用户会怎样。
  • 嘿@MajdaElferjani 确实通过单击答案旁边的 V 型刻度标记查找按钮将答案标记为正确,这有助于未来读者对 SO 的问题,我也很感激。干杯! :)

标签: java loops random


【解决方案1】:

您可以尝试在Set 中添加一些随机数,然后在需要时单独使用它们。

我的意思是,如果你每次都想得到一个随机数,你可以一次存储一些随机数,然后在需要时一个一个地检索它们。

在代码中,将其放入名为storeRandomNumbers() 的方法中,并在程序的开头调用它。另外,将Set 声明为全局变量。

您还可以创建一个单独的变量来跟踪已用完的随机数,并使用它从Set 中检索下一个随机数。

代码看起来像这样(根据您的需要进行更改):

Random rand = new Random();
Set<Integer> uniqueRandoms = new HashSet<>();
while (uniqueRandoms.size()<10){
    uniqueRandoms.add(rand.nextInt(11));
}
for (Integer i : uniqueRandoms){
    // System.out.print(i+" ");
    // retrieve them from here and use them whenever you want
}

编辑: 是的,正如@Andreas 给出的链接建议,您不要将字符串与== 进行比较,而是使用equals() 方法。

【讨论】:

    猜你喜欢
    • 2016-10-12
    • 2017-09-15
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    相关资源
    最近更新 更多