2017-12-12 11 views
-3

テキストベースのブラックジャックゲームを作成する学校プロジェクトがあります。私はBlackJackDeck、Card、Hand、Player、Dealerのような異なるクラスを作りました。私の教師は、ブラックジャックと呼ばれるクラスをゲームロジックとすることを望んでいます。私はBlackJack内でメインメソッドを作成しようとし、BlackJackDeckデッキをシャッフルするためのリファレンスを追加しました。しかし、それは "非静的な可変長のlekenは、静的コンテキストから参照することはできません"と言います。私がメインの方法を持っていなければ、私のプログラムは動くことができません。ここに私のコードです:静的コンテキストから非静的変数を参照することはできません[JAVA]

私はゲームのロジックを書くことができるようにゲームを実行可能にするにはどうしたらいいですか? ありがとうございます!

+1

これはあなたを助ける - https://docs.oracle.com/javase/tutorial/ – vinS

+0

その後、追加シャッフルデッキが含まれているあなたのブラックジャックのオブジェクトのコンストラクタを作成し、「新ブラックジャックを();」あなたが今シャッフルデッキを持っている場所を入れてください。 –

答えて

0

静的コンテキストから非静的変数にアクセスすることはできません。 変数(静的ではありません)はmainメソッド(静的)の外にあります。

static ArrayList<Spelare> spelare = new ArrayList<>(); 
static BlackJackKortlek leken = new BlackJackKortlek(4); 
static Dealer dealer = new Dealer(); 

それともmainの内側にそれを宣言:
は、以下のようにあなたの変数を宣言し

public static void main(String[] args) { 
    ArrayList<Spelare> spelare = new ArrayList<>(); //List with players 
    BlackJackKortlek leken = new BlackJackKortlek(4); //BlackJackDeck 
    Dealer dealer = new Dealer(); 
} 
0

あなたはmain()方法のBlackJackKortlek leken = new BlackJackKortlek(4);

insindeをインスタンス化する必要があります。これを済ませたら、メソッドを呼び出すことができます。

0

あなたは、単に静的変数としてleken宣言することができます。

private static BlackJackKortlek leken = new BlackJackKortlek(4); 

また、静的キーワードが実際に意味するものを読む必要があります。あなたがやるべきではない静的メソッド内の変数leken非静的にアクセスしようとしている

1

は、理由があることinstance variablesあなたはstaticメソッドは、オブジェクトを作成しなくてもアクセスできるように、オブジェクトを作成する場合にのみ、画像の下に来ます。

public static void main(String[] args) { 
    leken.blanda(); // leken is non-static variable. 
} 

したがって、メインメソッド内にオブジェクトを作成します。

public static void main(String[] args) { 
     BlackJackKortlek leken = new BlackJackKortlek(4); //BlackJackDeck 
     leken.blanda(); // leken is non-static variable. 
    } 
関連する問題