【问题标题】:initializing 2 random variables using the same Random a = new Random使用相同的 Random a = new Random 初始化 2 个随机变量
【发布时间】:2018-09-30 17:43:11
【问题描述】:

我正在使用“java.util.Random”编写一个脚本,并且我正在尝试为同一个 println 初始化两个随机变量,但它只有在我注释掉其中一个变量时才有效。这是我的问题所在的代码:

Random a = new Random();
    date = a.nextInt(29) + 1;
    year = a.nextInt(2019 - 2044)+ 1;

    System.out.println("The best day of your life will be on " + month + " " + date + ","+ " " + year + ".....give or take.\n");

我不知道如何同时初始化和使用两个变量“日期”和“年份”,这就是我认为的问题所在。因为当我注释掉一个变量时,另一个变量会正常工作。感谢任何帮助。

【问题讨论】:

标签: java variables random


【解决方案1】:

所以我认为问题在于同时初始化两个变量,但实际上问题在于第二个变量。我想要的是一个介于 2020 和 2045 之间的随机数。我为此使用了错误的公式。我最终做的是:

Random a = new Random();
date = a.nextInt(29) + 1;
YEAR = a.nextInt((2044) - 2018 + 1) + 2018;

第二个变量显示了在设定范围内获取随机数的方式。

前。变量 = a.nextInt((max) - min + 1) + min

【讨论】:

  • 除非你有充分的理由不这样做 - 更喜欢 ThreadLocalRandom.current() 而不是 new Random(),它更快并且可以做得更多。此外,a 是一个非常糟糕的变量名称,rngrandom 怎么样。
  • 另外,ThreadLocalRandom.current()Random 不同,有一个 nextInt 方法,该方法采用 minmax 绑定。因此,您可以将代码简化为 ThreadLocalRandom rng = ThreadLocalRandom.next();,然后是 date = rng.nextInt(1, 30)YEAR = rng.nextInt(2018, 2045)
  • 并且YEAR 不遵循Java 命名约定。 CAPSLOCK 仅用于常量 (static final),此变量不是。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-31
  • 1970-01-01
  • 2020-06-05
相关资源
最近更新 更多