1

我正在做一个学校项目,建立一个国际象棋游戏。我有我的板子,它创建数组并用棋子填充板子。

现在,我想在游戏类中实例化一个新棋盘并使用控制台输入玩家动作。为了使这尽可能简单,我的麻烦是输入非静态变量。

例如:

public class Test extends ConsoleProgram{

public static double a1;

 public static void main(String[] args) {
    a1 = readLine("Insert value of a1"); 
    System.out.println(a1);
 }
} 

有关 readLine() 的更多信息在这里

正如您可能看到的那样,这不会像java抱怨那样起作用cannot make static reference to the non-static method readLine()

我该如何解决这个问题?也许有一些非常基本的东西我只是不明白..

与往常一样,非常感谢您快速而有见地的回答!

4

6 回答 6

2

定义readlinestatic

创建一个类的对象,然后调用该方法,new Test().readline();

于 2013-05-10T11:22:52.767 回答
2

如果您不想将 readLine 方法设为静态,请调用实例:

public static void main(String[] args) {

    Test me = new Test();

    a1 = me.readLine("Insert value of a1");

    System.out.println(a1);

 }
于 2013-05-10T11:23:32.947 回答
1

readLine()`设为静态。然后就可以访问了

如果您将方法设为静态,那么您可以在 main() 方法中使用它

否则为 Test 类创建一个对象然后使用它

于 2013-05-10T11:21:44.927 回答
1

我发现的最简单的解决方法是简单地在 main 方法中实例化对象,然后从构造函数中调用相关方法。

public static void main(String[] args)
{
     new ClassThing();
}

public ClassThing()
{
    // Make your method calls here.
}

这意味着您可以访问实例方法,而无需从static context.

于 2013-05-10T11:22:20.903 回答
1

您应该实例化具有该方法的类的对象readLine()

如果该类的名称是 ie Reader,您应该执行以下操作:

 Reader r= new Reader();
 a1 = r.readLine("Insert...");`
于 2013-05-10T11:24:46.247 回答
1

在 main 中创建Test实例并调用它的实例方法。

public class Test extends ConsoleProgram {
    public double a1;

    public void run() {
        a1 = readLine("Insert value of a1");
        System.out.println(a1);     
    }

    public static void main(String[] args) {
        Test main = new Test();
        main.run();
    }

}
于 2013-05-10T11:24:14.177 回答