【问题标题】:Number is too long to be passed to Random() ?数字太长而无法传递给 Random()?
【发布时间】:2011-06-28 06:52:30
【问题描述】:

我正在努力

Random generator = new Random(1309233053284);

Randomjava.util.Random

说数字太长了,为什么System.currentTimeMillis()可以传给构造函数呢?它会返回更大的数字。

1309233053284 是毫秒,如果您想知道的话。

【问题讨论】:

    标签: java random numbers long-integer milliseconds


    【解决方案1】:

    你可能会有更好的运气:

    Random generator = new Random(1309233053284L);
    

    在 Java 中,除非另有说明,否则所有文字数字都是 int 类型。要将您的号码解释为long,您需要在它后面加上“L”(或者“l”,但这很难与“1”区分开来,因此不太清楚)。

    【讨论】:

    • 运气与此无关...除非您将随机猴子与打字机一起用作软件开发人员:-)
    • @Stephen - 我不同意。以我的经验,软件开发至少有 90% 是运气。例如,如果您获得了一个库和该库的规范,并且该库实际上遵循规范所说的内容,那么您很幸运。如果你是第一次编译你的代码,它会做你想做的所有事情,完全按照你的意愿去做,那么你是非常幸运的。
    【解决方案2】:

    试试这个

    Random generator = new Random(1309233053284l);
    

    您应该将其指定为长。

    如果您调用new Random(1309233053284),它将使用带有int 参数的构造函数。当您调用new Random(System.currentTimeMillis()) 时,它使用构造函数来接受long 参数,因为System.currentTimeMillis() 返回一个long。要使其工作,您还应该通过添加 l1309233053284 指定为 long。

    【讨论】:

      【解决方案3】:

      整数字面量默认为int 类型。您需要为浮点数添加f,为双精度添加d,为长添加LL 优于 l,因为后者看起来像 1

      例如

      31 <= 31 as an int
      3l <= looks like 31 but is 3 as a long.
      31L <= 31 as a long.
      311 <= is 311 as an int.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多