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

またはreadlineとして定義するstatic

クラスのオブジェクトを作成してからメソッドを呼び出し、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

私が見つけた最も簡単な回避策は、メイン メソッドでオブジェクトをインスタンス化し、コンストラクターから関連するメソッドを呼び出すことです。

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

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

これは、インスタンス メソッドにアクセスできることを意味し、.a からすべてを呼び出す必要はありませんstatic context

于 2013-05-10T11:22:20.903 に答える
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 に答える
1

メソッドを持つクラスのオブジェクトをインスタンス化する必要がありますreadLine()

そのクラスの名前が ie のReader場合、次のようにする必要があります。

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