我是Java新手,我想知道这段代码有什么问题,它给我一个错误说:
线程“main”中的异常java.lang.Error:未解决的编译问题:
对于Random
类型,方法nextInt(int)未定义在Random.main(Random.java:8)
线程“main”中的异常java.lang.Error:未解决的编译问题: 对于Random
类型,方法nextInt(int)未定义
import java.util.Random;
public class Random {
public static void main(String[] args){
Random rnd = new Random();
System.out.println(rnd.nextInt(100));
}
}
答案 0 :(得分:4)
您的Random
班级隐藏java.util.Random
。重命名你的班级。
Random rnd = new Random();
创建了一个类的实例,而不是java.util.Random
,而您的类没有nextInt
方法。
答案 1 :(得分:2)
当Java看到对象的声明时,引用的类取决于对象的声明方式。
在您的情况下,您有自己的名为Random的类,它正在导入java.util.Random
。但是,由于类名在声明时未完全限定,因此当前包中的类Random
优先,这意味着有效地忽略了文件中java.util.Random
的导入。
一些选项:
e.g。
import java.util.Random;
public class Random {
public static void main(String[] args){
java.util.Random rnd = new java.util.Random();
System.out.println(rnd.nextInt(100));
}
}
在这种情况下,使用完全限定名称消除了您希望引用的类的歧义,并明确告诉Java使用哪个版本。
如果这是用于学习,那么具有相同名称的类可能没问题,但是,对于需要长期维护的代码,您可能需要重新考虑您的命名约定。
答案 2 :(得分:0)
我认为这会导致java.util.Random和您自己的Random类之间发生冲突。我想在你写的行Random rnd = new Random();
它从你自己的Random类创建一个对象。最好将您的班级重命名为CustomizeRandom
或者像这样
答案 3 :(得分:0)
作为@Eran already answered,您刚刚使用了Random
类(用户定义),但您需要使用java.util.Random
类。
以下是一个可以帮助您的工作示例:
import java.util.Random;
class RandomNumber {
public static void main(String[] args) {
Random rdm= new Random();
int c=100;
System.out.println("no is "+rdm.nextInt(c));
}
}
它会生成0到100之间的数字,您还可以使用Random
类的其他方法。
编辑:@vogel& @trengot感谢您编辑此答案,从下次我将用更好的正式语言回答。 (y)的