ホーム>source

BlackJackプロジェクトのディーラークラスで、arrayList "theDeck"の上位2枚の "カード"を印刷してください。コンパイラエラー(後述)が発生し、それが何を意味するのか理解できません。これは、カードのデッキを作成し、それらをシャッフルし、それらをarrayList "theDeck"に配置するクラス "Deck"の私のコードです。

<前>ウィズウィズ

これは、arrayList "theDeck"の上位2つの要素を取得してコンソールに出力する別のクラス "Dealer"の私のコードです。

<前>ウィズウィズ

コンパイルしようとすると、次のエラーメッセージが表示されます。

<前>ウィズウィズ

私のエラーは何ですか?どちらの方法も静的ではありません...私はとても愚かですか? 私はディーラーを変えてデッキではなくゲームを拡張し、その逆も同じ問題を試しました。 (さらにコードが必要な場合はお知らせください。投稿を編集します。)
編集:私は今、多くの関連する質問があることに気づきました。すみません。コーディングとこのWebサイトを初めて使用する場合は、しばらくお待ちください。

* Compilation: javac Deck.java * Execution: java Deck * Author: Aidan Hill * Status: Working * Priority: None * ******************************************************************************/ import java.util.ArrayList; /******************************************************************************/ public class Deck extends Game { int n; //Deck deck = new Deck(); String[] deckArray = new String[n]; String[] SUITS = { "Diamonds", "Clubs", "Spades", "Hearts" }; String[] RANKS = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace" }; public Deck() { // constructor n = SUITS.length * RANKS.length; deckArray = new String[n]; for (int i = 0; i < RANKS.length; i++) { for (int j = 0; j < SUITS.length; j++) { deckArray[SUITS.length*i + j] = RANKS[i] + " of " + SUITS[j]; } } } public String shuffleDeck() { // shuffle the deck int i; for (i = 0; i < n; i++) { int r = i + (int) ((n - i) * Math.random()); String temporary = deckArray[r]; deckArray[r] = deckArray[i]; deckArray[i] = temporary; } return deckArray[i - 1]; } public ArrayList<String> theDeck() { // save shuffled deck in an arraylist ArrayList<String> theDeck = new ArrayList<String>(); for (int i = 0; i < n; i++) { theDeck.add(deckArray[i]); } return theDeck; } }
あなたの答え
  • 解決した方法 # 1

    ウィズウィズ  クラスの名前です。ウィズウィズ  クラスメソッドではありません。クラスのインスタンスで呼び出す必要があります。

    これを機能させるには、2つの方法があります。 1つの方法は、 Deck をインスタンス化することです。  オブジェクト、および theDeck() を呼び出す  その上:

    <前>ウィズウィズ

    もう一つは Deck を作ることです  静的:

    <前>ウィズウィズ

    これは theDeck() になります  仕事-その Deck deck = new Deck(); hand.add(deck.theDeck().toString()); を除いて  非静的フィールドです。静的にするか、メソッドパラメータとして渡す必要があります。

    theDeck()

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ javascript - テキストボックスにピンコードを入力したときに、すべての場所をピンコードで表示する反応コードを作成するにはどうすればよいですか?