我在使用静态主方法和输入非静态值时遇到问题

时间:2013-05-10 11:20:02

标签: java

我正在开展一个学校项目,建立一个国际象棋游戏。我有我的电路板,可以创建阵列并用电路板填充电路板。

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

例如:

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);
 }
} 

more info on readLine() here

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

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

一如既往,非常感谢您快速而富有洞察力的答案!

6 个答案:

答案 0 :(得分:2)

readline定义为static

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

答案 1 :(得分:2)

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

public static void main(String[] args) {

    Test me = new Test();

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

    System.out.println(a1);

 }

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:1)

我发现的最简单的工作就是在main方法中实例化对象,并从构造函数中调用相关的方法。

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

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

这意味着您可以访问实例方法,而无需从static context调用所有内容。

答案 4 :(得分: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();
    }

}

答案 5 :(得分:1)

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

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

 Reader r= new Reader();
 a1 = r.readLine("Insert...");`