我的Random有什么问题?

时间:2010-04-22 21:02:31

标签: java 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) ;
                        ^

这里出了什么问题?好像我已经把一切都做对了。

7 个答案:

答案 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)

听起来Randmain方法中的局部变量。

调用“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);