非常简单的随机数生成器编译问题

时间:2014-01-20 04:28:07

标签: java random override class-hierarchy

您好我是Java的新手,我只是想知道为什么我的程序没有编译。每当我编译程序时,我都会收到以下错误消息:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The method nextInt(int) is undefined for the type Random

    at Random.main(Random.java:11)   

对我的问题的任何意见都将不胜感激。

import java.util.Random;

class Random {
    public static void main(String[] args)
    {
        Random dice = new Random();
        int number=0;

        for(int counter=1; counter<=10; counter++)
        {
            number = dice.nextInt(6);
            System.out.println(number);
        }
    }

}

5 个答案:

答案 0 :(得分:17)

您正在通过命名班级Random隐藏您要从java.util.Random导入的Random班级。称之为别的。

class RandomTest {
    ...
}

注意:不要忘记使用相应的名称(上例中的RandomTest.java)重命名文件名。

答案 1 :(得分:7)

您有一个名为Random的课程,但您也尝试使用名为Random的API课程。当您调用dice.nextInt(6)时,Java正在调用类上的nextInt函数,而不是API方法。要修复,请更改代码:

import java.util.Random;

class AnythingButRandom {
    public static void main(String[] args)
    {
        Random dice = new Random();
        int number=0;

        for(int counter=1; counter<=10; counter++)
        {
            number = dice.nextInt(6);
            System.out.println(number);
        }
    }

}

(然后将Random.java重命名为AnythingButRandom.java

答案 2 :(得分:7)

您正在隐藏导入,您可以重命名您的课程;或者您可以使用完整的包名称

 java.util.Random dice = new java.util.Random(); // <-- like so

答案 3 :(得分:2)

当你创建一个随机骰子对象时,它不会创建一个java.util.Random对象,而是创建一个你自己的类的对象,Random。正在对您的类的对象调用nextInt方法,并且由于它不存在,您将收到错误。将您的类命名为ANYTHING但随机,或任何其他导入的内容。不要忘记将文件重命名为相同的新名称。

答案 4 :(得分:0)

使用

初始化随机对象时
Random dice = new Random();

它实际上不是从java.util.Random创建随机类的对象。

如果您真的希望将您的班级称为“随机”,请使用

java.util.Random dice = new java.util.Random();

但这简直太丑了。我建议你为班级找一个不同的名字。