J2ME错误 - Random类型中的方法nextInt()不适用于参数(int)

时间:2010-11-13 10:18:27

标签: java java-me random

我刚刚开始学习J2ME,而且直接使用Random类时我遇到了这个错误。 Arg,这太令人沮丧了。以前有人遇到过同样的问题吗?我已经尝试重新启动Eclipse,只编写随机生成器的代码来隔离它,但无济于事。 顺便说一句,我正在使用CLDC 1.1和MIDP 2.1。

3 个答案:

答案 0 :(得分:2)

似乎你指出了错误的CLDC和MIDP库。 CLDC 1.1中存在new Random().nextInt(x)

如果您使用的是CLDC 1.0,则可以创建自己的nextInt(int)实现:

public static int random(Random r, int n) {

    if ((n & -n) == n)  // i.e., n is a power of 2
        return (int)((n * (long)r.nextInt()) >> 31);

    int bits, val;
    do {
        bits = r.nextInt();
        val = bits % n;
    } while(bits - val + (n-1) < 0);

    return val;
}

(与CLDC 1.1中的nextInt(int)相同)。

答案 1 :(得分:1)

  • nextInt(int)仅在CLDC 1.1之后可用,因此您必须指定CLDC 1.1而不是1.0

  • 如果你指定了cldc 1.1仍然会得到这个错误,那很可能是eclipse的错误。花了我几个小时才找到: 在Eclipse中转到Windows - &gt;偏好 - &gt; Java ME - &gt;设备管理 - &gt;选择您的默认设备 - &gt;编辑 - &gt;图书馆 - &gt;在那里你必须删除cldc_1.0.jar

答案 2 :(得分:0)

我在netbeans中遇到了同样的问题,并解决了它。

  1. 右键单击您的项目,转到属性。
  2. 前往图书馆&amp;正在构建的资源
  3. 添加资料库
  4. 滚动JMUnit for CLDC11
  5. 单击“确定” 并建立。所有问题都解决了
  6. 我刚刚离开JMUnit进行CLDC11。不确定我是否需要它。一旦我弥补了失去的时间,也许我会在没有它的情况下进行测试。