You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java报错:java.util.Random.nextLong方法参数不匹配

解决Random.nextLong()参数不匹配的编译错误

引发报错的代码

protected static long random(long a, long b) {
    //Random random = new Random();
    return a + new Random().nextLong(b - a);
}

终端返回的错误信息

java: method nextLong in class java.util.Random cannot be applied to given types;

  所需:无参数

  提供:long

  原因:实际参数与形式参数列表长度不符

报错原因

java.util.Random类的nextLong()方法本身是无参方法,但代码中调用时传入了long类型的参数b - a,导致参数列表长度不匹配,触发编译错误。

解决方案

如果需要生成范围在[a, b)之间的随机long值,推荐使用Java 8及以上提供的longs(long origin, long bound)方法,该方法可以直接生成指定区间的随机数,写法简洁且避免手动计算的错误:

protected static long random(long a, long b) {
    return new Random().longs(a, b).findFirst().getAsLong();
}

如果需要兼容更低版本的Java,可以通过无参nextLong()结合取模运算实现(注意处理负数情况):

protected static long random(long a, long b) {
    Random random = new Random();
    long range = b - a;
    long result = random.nextLong() % range;
    return a + (result < 0 ? result + range : result);
}

内容的提问来源于stack exchange,提问作者sctts-lol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 09:42:43