前提・実現したいこと
javaでBlue Jを使いトランプゲームに役立つクラスを書いています。
クラスは1枚のトランプを表すCardクラス
ジョーカーを覗く52枚の山札を表すDeckクラス
プレイヤーの手札を表すHandクラス
そしてmainメソッドのDealHandクラスです。
■■な機能を実装中に以下のエラーメッセージが発生しました。
Deckクラスのメソッドで山札からカードを1枚減らし、HandクラスのaddCardメソッドで手札にカードを一枚加えるという機能をつけたいのですが、メソッドを定義してるはずなのにcannot find symbol - method addCard(Card c)とエラーメッセージが出て来てしまいます。
エラーメッセージ
cannot find symbol - method addCard(Card c)
該当のソースコード
// mainメソッド
import java.util.ArrayList;
import java.util.Scanner;
public class DealHands
{
public static void main(String[] args) { Deck deck = new Deck(); System.out.println(deck.toString()); deck.shuffle(); System.out.println(deck.toString()); Scanner scan = new Scanner(System.in); int i = scan.nextInt(); ArrayList<Hand>hands = new ArrayList<>(); hands.addCard(deck.dealCard()); for (int count = 1; count <= i; ++ count) { hands.add(new Hand()); } for (int count = 1; count <= 5; ++ count) { hands.addCard(deck.dealCard()); } System.out.println(hands.toString()); System.out.println(deck.toString()); }
}
// Handクラス
import java.util.ArrayList;
public class Hand
{
ArrayList<Card>cards = new ArrayList<>();
public Hand() { } public String toString() { return cards.toString(); } public void addCard(Card c) { cards.add(c); }
}
// Deckクラス
import java.util.Random;
import java.util.ArrayList;
public class Deck
{
ArrayList<Card>cards = new ArrayList<>(); public Deck() { for (int suit = 0; suit <= 3; suit++){ for (int rank = 2; rank <= 14; rank++){ cards.add(new Card(rank,suit)); } } } public void shuffle() { Random r = new Random(); ArrayList<Card> temp = new ArrayList<Card>(); while (cards.size() > 0) temp.add(cards.remove(r.nextInt(cards.size()))); cards = temp; } public Card dealCard() { Card p = null; if (!cards.isEmpty()){ p = cards.remove(0); } else{ System.err.println("Deck is empty"); System.exit(1); } return p; } public String toString() { String out = ""; int count = 0; for (Card card : cards){ out += card.toString() + " "; ++count; if (count % 13 == 0) out += '\n'; } return out; }
}
// Cardクラス
public class Card
{
private final int rank; private final int suit; public Card(int rankIn, int suitIn) { // initialise instance variables String out; //char suitM; rank = rankIn; suit = suitIn; if(!(rank >=2 && rank <= 14)){ System.out.println("Error"); System.exit(1); } if(!(suit >=0 && suit <=3)){ System.out.println("Error"); System.exit(1); } } public String toString() { String out = ""; if(rank >= 2 && rank <=10){ out += rank; } else if(rank == 11){ out += "J"; } else if(rank == 12){ out += "Q"; } else if(rank == 13){ out += "K"; } else{ out += "A"; } if(suit == 0){ out += '\u2663'; } else if(suit == 1){ out += '\u2662'; } else if(suit == 2){ out += '\u2661'; } else{ out += '\u2660'; } return out; }
}
試したこと
書き直しましたがエラーは変わりません。
補足情報(FW/ツールのバージョンなど)
Blue Jで書いています。
回答1件
あなたの回答
tips
プレビュー