質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

1629閲覧

javaでメソッドを定義しているはずなのにメソッドが見つかりません、とエラーが出て来てしまいます。

lily22

総合スコア16

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/04/12 17:26

前提・実現したいこと

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で書いています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2018/04/12 17:37

コードをマークダウンしてください。質問編集画面でコード部分を選択し、<code>を押すとコードが整形されて読みやすくなります。
guest

回答1

0

ベストアンサー

java

1ArrayList<Hand>hands = new ArrayList<>();

handsはあくまでHandの集まりのArrayListであって、Handではありません。
ArrayListは「要素を追加する」addメソッドは持っていてもaddCardというメソッドは持っていません。

投稿2018/04/12 17:41

swordone

総合スコア20649

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lily22

2018/04/13 02:17

ありがとうございます! 自分じゃ気づくことができませんでした。 質問してよかったです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問