[英]Whats wrong with my Random?
这是我的导入声明:
import java.util.*;
这里主要是:
Random Rand = new Random() ;
这是一个公共的无效方法:
int a = 0 ;
while (!done)
{
int a = Rand.nextInt(10) ;
if (debug) stuff ;
if (possibles[a]==1) done = true ;
}
这是我得到的错误消息:
TicTacToe.java:85: cannot find symbol
symbol : method nextInt(int)
location: class Rand
a = Rand.nextInt(10) ;
^
这里出了什么问题? 好像我已经把一切都做对了。
您似乎已在项目中的某处定义了一个名为Rand
的类。 不要将其用于变量名称。 我建议random
使用一个小r。
此外,这条线是非法的:
int a - 0 ;
你或许应该删除否则你定义a
两次。
location: class Rand
您显然在同一个包或导入中有一个名为Rand
的类 。 从命名变量名Rand
以rand
根据的Sun Java命名约定 ,也将
努力
解决特定问题 。
您在main
方法中定义了Rand
并尝试在public void方法上使用它。 它超出了范围。
尝试用相同的方法定义Rand
(这次使用小写)
就像是:
在主要:
Random Rand = new Random();
在你的方法中:
Random rand = new Random();
int a = 0 ;
while (!done) {
int a = rand.nextInt(10) ; //<-- the one declared above
if (debug){ stuff ; }
if (possibles[a]==1){ done = true ; }
}
如果是的话,BTW 总是使用括号
听起来Rand
是main
方法中的局部变量。
调用“public void method”时,它不在范围内。 因此,编译器将标识符Rand
解释为类名。 巧妙的是,您的类必须命名为Rand
,因此编译器会查找名为nextInt()
的静态方法,并失败。
要解决它,你有几个选择。 使Random
实例成为您创建的“public void method”中的局部变量(通过将其作为main
方法或其他调用者的参数传递,或通过在方法中实例化)。 或者,您可以声明私有静态变量Rand
。 调用该方法时,该变量将在范围内。
顺便说一句,Java的约定是变量以小写字母开头。 类型(类,接口和枚举)以大写字母开头。 打破这种约定会使您的代码看起来对Java程序员来说非常奇怪。
编译器告诉你错误在location: class Rand
。
为什么认为Rand
是一个班级? 你的代码中是否有class Rand
的定义?
如果你打电话给你,会发生什么Random
对象r
而不是Rand
?
尝试将Variable Rand重命名为其他名称..
该错误消息表明Java正在寻找一个名为nextInt
的方法,该方法在名为Rand
的类上获取int
。
出于某种原因,Java认为必须查看该类而不是变量。 你的程序中是否有一个名为Rand
的课程?
遵循命名约定并使用小写字母开始变量名称可以轻松避免这种混淆:
Random rand = new Random();
int a = rand.nextInt(10);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.