JAVA非法启动类型

goo*_*ing 6 java

我的节目:

public class m
{
    public static void main (String[] args)
    {
        boolean bool = true;

        while(bool)
        {
            rand_number player_1 = new rand_number();
            System.out.println("Player_1 guessed " + player_1.rand_n);

            rand_number player_2 = new rand_number();
            System.out.println("Player_2 guessed " + player_2.rand_n);

            rand_number player_3 = new rand_number();    
            System.out.println("Player_3 guessed " + player_3.rand_n);

            if(player_1.guessed || player_2.guessed || player_3.guessed)
            {
                System.out.println("We have a winner");   
                bool = false;
            }
        }
    }
}

class rand_number
{
    int rand_n = (int)(Math.random() * 10);

    if(rand_n == 2) 
    {
        boolean guessed = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:m.java:31: illegal start of type.语法是绝对正确的,我已经检查了数百万次.怎么了?

Mar*_*ers 11

class rand_number
{
    //...    
    if(rand_n == 2) 
    {
        boolean guessed = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

您只能在类级别进行字段声明.像这样的if语句需要在方法,构造函数或初始化块中.

您可以像这样消除if语句:

boolean guessed = rand_n == 2;
Run Code Online (Sandbox Code Playgroud)

但我怀疑为什么你想要在创建时设置这个值,而不是响应某些用户操作.


Col*_*ert 5

你的语法是完全错误的.rand_number不包含方法,但尝试做条件.


如果你想做随机数,你应该尝试这样的Random类:

Random random = new Random();
int numberToFind = random.nextInt(2);
Run Code Online (Sandbox Code Playgroud)

你应该看看的Java命名约定,它有助于有一个干净的代码,任何一个Java开发人员可以在第二个明白.例如,使用大写开始类名.