-2

私はこれを以前に投稿し、私の質問の大部分は答えられましたが、コードに最後のエラーが 1 つだけあります。

SO基本的に私はJavaでブラックジャックのゲームを作っています。カードクラス、デッキクラス、メインがあります。私が抱えている問題は私のメインにあります。私のデッキ クラスでは、配列リストで 52 枚のカードのデッキを作成します。次に、一番上のカードを受け取り、それをユーザーの手の中にあるカードである手の配列リストに追加するメソッド ディールがあります。ユーザーがこれ以上続行したくない場合、カードの配付は停止します。私のメインの最後の部分は、ハンド配列リストの値を取得し、それらを合計して 21 と比較し、ユーザーがオーバーしたかどうかを確認します。カードの値を int の合計に保持しようとしていることに気付きましたが、それらを比較できるように配列リストに値を保持するには何を使用すればよいでしょうか? ヘルプ/提案やアドバイスをいただければ幸いです

このコードで発生しているエラーは次のとおりです。

 1 error found:
File: E:\Documents\Java Files\Assignment 3\CardGameTester.java  [line: 33]
Error: Type mismatch: cannot convert from Card to int

問題になっている私のメインの部分はこれです:

int total;

for(int index = 0; index <= hand.size(); index++)
{
  total = hand.get(index);
}

System.out.println("Your total value for you cards are: " + total);

if(total == 21){
  System.out.println("Congrats, you have won for not going over 21");
}
else
  {
    System.out.println("Sorry, you lose for going over 21");
}

ここに興味がある人のために、私のカードとデッキのクラスがあります:

public class Card
{
  private int rankValue, suitValue;
  private String ranks[] = {"Hearts", "Clubs", "Spades", "Diamonds"};
  private String suits[] = {"Ace", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"};

  public Card(int rank, int suit)
  {
    rankValue = rank;
    suitValue = suit;
  }

  public String convertToString(int rank){
    return ranks[rank];
  }

  public void setRank(int rank){
    rankValue = rank;
  }

  public void setSuit(int suit){
    suitValue = suit;
  }

  public int getRank(){
    return rankValue;
  }

  public int getSuit(){
    return suitValue;
  }

  public String toString(){
    String name = ranks[rankValue] + " of " + suits[suitValue];
    return name;
  }
}

デッキクラス:

import java.util.ArrayList;
import java.util.Collections;

public class Deck
{
  private ArrayList<Card> cards = new ArrayList<Card>();

  public Deck()
  {
    for(int a = 1; a <= 4; a++)
    {
      for(int b = 1; b <= 13; b++)
      {
        Card c = new Card(a,b);
        cards.add(c);
      }
    }
    shuffle();
  }

  public void shuffle(){
    Collections.shuffle(cards);
  }

  public Card deal(){
    int index = 0;
    Card c = cards.remove(index);
    index++;
    return c;
  }
}
4

3 に答える 3

2
cannot convert from Card to int

カード クラスには、int valueによってアクセスされるフィールドがある場合がありますgetValue()

于 2012-10-13T02:21:18.913 に答える
1

クラスには、またはカードの整数値を取得するためCardのメソッドが必要です。次に、すべてのカードでそれを呼び出し、返された番号を合計します。ただし、ソフト エースを扱うのは少し難しいでしょう。intValuegetValue

また、手動でインデックスを作成するのではなく、foreach を使用してください。

int total;
for(Card card: hand)
{
   total += card.value();
}
于 2012-10-13T02:22:24.337 に答える
0

このメッセージは、カードが「int」ではないことを伝えていますが、これはもちろん完全に真実です。オブジェクト指向プログラミングについて読むことをお勧めします。基本的な考え方は、クラスには int のような単純な型や他のクラスの他のインスタンスであるプロパティが含まれているということです。クラスが異なれば、操作とプロパティのセットも異なります。コンパイラは、カードに特定の操作があることを認識しており、その参照に対しては、カードまたはカードのようなもののみを許可します。インターネット上には簡単に見つけることができる多くの優れた議論やチュートリアルがあるため、これ以上詳しく説明したくありません。

于 2012-10-13T02:38:14.530 に答える