繁体   English   中英

我的Random有什么问题?

[英]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 从命名变量名Randrand根据的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 总是使用括号

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

调用“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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM