这是我的导入声明:
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) ;
^
这里出了什么问题?好像我已经把一切都做对了。
答案 0 :(得分:5)
您似乎已在项目的某个位置定义了一个名为Rand
的类。不要将其用于变量名称。我建议使用random
和一个小r。
此外,这条线是非法的:
int a - 0 ;
您应该删除它,否则您将定义a
两次。
答案 1 :(得分:4)
location: class Rand
您显然在同一个包或导入中有一个名为Rand
的类。根据{{3}}将变量名称从Rand
重命名为rand
,它将 work 修复特定问题。
答案 2 :(得分:4)
您在Rand
方法中定义了main
,并尝试在 public void method 上使用它。它超出了范围。
尝试在相同的方法中定义Rand
(此时使用小写)
类似的东西:
在main中:
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使用大括号总是,即使在一行中也是
答案 3 :(得分:3)
听起来Rand
是main
方法中的局部变量。
调用“public void method”时,它不在范围内。因此,编译器将标识符Rand
解释为类名。巧合的是,您的类必须命名为Rand
,因此编译器会查找名为nextInt()
的静态方法,并失败。
要修复它,您有几个选择。使Random
实例成为您创建的“public void method”中的局部变量(通过将其作为main
方法或其他调用者的参数传递,或者通过在方法中实例化)。或者,您可以声明私有静态变量Rand
。调用该方法时,该变量将在范围内。
顺便说一句,Java的约定是变量以小写字母开头。类型(类,接口和枚举)以大写字母开头。打破这种约定会使您的代码看起来对Java程序员来说非常奇怪。
答案 4 :(得分:1)
编译器告诉你错误在location: class Rand
。
为什么认为Rand
是一个类?您的代码中是否有class Rand
的定义?
如果您拨打Random
对象r
而不是Rand
,会怎样?
答案 5 :(得分:1)
尝试将Variable Rand重命名为其他名称..
答案 6 :(得分:0)
错误消息表明Java正在寻找一个名为nextInt
的方法,在名为int
的类上采用Rand
。
出于某种原因,Java认为必须查看该类而不是变量。您的计划中是否有一个名为Rand
的课程?
通过遵循命名约定并使用小写字母开始变量名称,可以轻松避免这种混淆:
Random rand = new Random();
int a = rand.nextInt(10);