在卡片类中找不到符号

k778899

在这里,我创建了一个 Card 类,它为一张牌提供了花色和等级的值我还创建了一个 Deck 类,它提供了 52 张牌、一张标准扑克牌、一个洗牌方法、交易方法、报告方法(报告剩余的数量甲板)和 toString 方法。当我尝试制作一副新纸牌时,我的问题出在我的 Deck 课上。我从 Deck 类收到此错误:

Deck.java:12: error: cannot find symbol
      for (int suit = Card.DIAMONDS; suit <= Card.SPADES; suit++)               
symbol:   variable DIAMONDS
location: class Card

Deck.java:12: error: cannot find symbol
      for (int suit = Card.DIAMONDS; suit <= Card.SPADES; suit++)

symbol:   variable SPADES

我曾尝试将 Card.DIAMONDS 更改为 Suit.DIAMONDS,这又给了我另一个错误。任何有关我的问题所在的方法的帮助将不胜感激。这对我来说是一次学习经历,所以我喜欢指导而不是确切的解决方案。

enum Suit {
    HEARTS, DIAMONDS, CLUBS, SPADES
};

enum Rank {
    ACE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING
};

public class Card {

private Rank aRank;
private Suit aSuit;

public Card(Suit aSuit, Rank aRank) {
    this.aSuit = aSuit;
    this.aRank = aRank;
}

public Rank getRank() {
    return aRank;
}

public Suit getSuit() {
    return aSuit;
}

public String toString() {
    String cardValue = "";
    String rank = "";
    String suit = "";
    switch (aSuit) {
    case HEARTS:
      suit = "hearts";
      break;
    case DIAMONDS:
      suit = "diamonds";
      break;
    case CLUBS:
      suit = "clubs";
      break;
    case SPADES:
      suit = "spades";
      break;
  }

switch (aRank) {
  case ACE:
    rank = "Ace";
    break;
  case TWO:
    rank = "2";
    break;
  case THREE:
    rank = "3";
    break;
  case FOUR:
    rank = "4";
    break;
  case FIVE:
    rank = "5";
    break;
  case SIX:
    rank = "6";
    break;
  case SEVEN:
    rank = "7";
    break;
  case EIGHT:
    rank = "8";
    break;
  case NINE:
    rank = "9";
    break;
  case TEN:
    rank = "10";
    break;
  case JACK:
    rank = "Jack";
    break;
  case QUEEN:
    rank = "Queen";
    break;
  case KING:
    rank = "King";
    break;
}
cardValue += rank + " of " + suit;
return cardValue;
}

public int compareTo(Card other) {
    int rankComparison = aRank.compareTo(other.aRank);
    return rankComparison != 0 ? rankComparison : aSuit.compareTo(other.aSuit);
}

public boolean equals(Card other) {
    if (aRank == other.aRank)
        return true;
    if (aSuit == other.aSuit)
        return true;
    return false;
}

// Main method to test.
public static void main(String[] args) {
    Card c1 = new Card(Suit.SPADES, Rank.FIVE);
    Card c2 = new Card(Suit.HEARTS, Rank.TWO);
    Card c3 = new Card(Suit.CLUBS, Rank.EIGHT);
    Card c4 = new Card(Suit.DIAMONDS, Rank.FIVE);

    Card r1 = new Card(Suit.CLUBS, Rank.ACE);
    Card r2 = new Card(Suit.DIAMONDS, Rank.JACK);
    Card r3 = new Card(Suit.HEARTS, Rank.QUEEN);
    Card r4 = new Card(Suit.SPADES, Rank.KING);

    System.out.println(c1);
    System.out.println(c2);
    System.out.println(c3);

    if (c1.compareTo(c2) < 0)
        System.out.println(c2 + " outranks " + c1);
    else if (c1.compareTo(c2) > 0)
        System.out.println(c1 + " outranks " + c2);

    if (c1.compareTo(c3) < 0)
        System.out.println(c3 + " outranks " + c1);
    else if (c1.compareTo(c3) > 0)
        System.out.println(c1 + " outranks " + c3);

    if (c1.compareTo(c1) == 0)
        System.out.println(c1 + " is equal to " + c1);
    else
        System.out.println(c1 + " is NOT equal to " + c1);

    if (c1.equals(c4))
        System.out.println(c1 + " is equal to " + c4);
    else
        System.out.println(c1 + " is NOT equal to " + c4);

    if (r1.compareTo(r2) < 0)
        System.out.println(r1 + " comes before " + r2);
    else if (r1.compareTo(r2) > 0)
        System.out.println(r1 + " comes after " + r2);
    else
        System.out.println(r1 + " is equal to " + r2);

    if (r4.compareTo(r3) < 0)
        System.out.println(r4 + " comes before " + r3);
    else if (r4.compareTo(r3) > 0)
        System.out.println(r4 + " comes after " + r3);
    else
        System.out.println(r4 + " is equal to " + r3);
}
}

我的甲板课:

import java.lang.reflect.Array;
import java.util.*;
public class Deck{
   public static final int NEWCARDS = 52;
   private Card[] deckOfCards;        
   private int currentCard;           

   public void Deck( ) {
      deckOfCards = new Card[ NEWCARDS ];
      int i = 0;

      for (int suit = Card.DIAMONDS; suit <= Card.SPADES; suit++)
         for ( int rank = 1; rank <= 13; rank++ )
             deckOfCards[i++] = new Card(suit, rank);
             currentCard = 0;
   }
   public void shuffle(int n) {
      int i, j, k;

      for ( k = 0; k < n; k++ ){ 
      i = (int) ( NEWCARDS * Math.random() );  
      j = (int) ( NEWCARDS * Math.random() );  

      Card temp = deckOfCards[i];
      deckOfCards[i] = deckOfCards[j];
      deckOfCards[j] = temp;
      }
      currentCard = 0;   
   }

   public Card deal() {

      if (currentCard < NEWCARDS) {
         return ( deckOfCards[currentCard++] );
      }
      else{
         System.out.println("Out of cards error");
         return ( null );  
      }
   }

   public String toString() {
      String s = "";
      int k;
      k = 0;

      for ( int i = 0; i < 4; i++ ) {        
          for ( int j = 1; j <= 13; j++ )
             s += (deckOfCards[k++] + " ");
             s += "\n";
     }
      return (s);
   }
}
艾略特新鲜

enum不是类的一部分。它也不是int. 改变

for (int suit = Card.DIAMONDS; suit <= Card.SPADES; suit++)

要访问Suit,您需要ordinal()分配给int. 就像是

for (int suit = Suit.DIAMONDS.ordinal(); suit <= Suit.SPADES.ordinal(); suit++) {
    Suit s = Suit.values()[suit];
    // ...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Android Studio中找不到符号类

来自分类Dev

找不到符号-T类

来自分类Dev

找不到符号所属的类

来自分类Dev

找不到符号类意图

来自分类Dev

找不到符号类BaseAdapter

来自分类Dev

找不到符号类newLatLng

来自分类Dev

找不到符号-T类

来自分类Dev

找不到符号:类NumberTools

来自分类Dev

找不到符号类newLatLng

来自分类Dev

Java:找不到符号类

来自分类Dev

找不到符号类 KeyEvent

来自分类Dev

在main中创建类的objec时找不到符号错误

来自分类Dev

在Android Studio中找不到符号类Mesh

来自分类Dev

在Android Studio中找不到符号类错误

来自分类Dev

在Android Studio中找不到符号类向量

来自分类Dev

在 BoxLayout 类中找不到符号 X_AXIS'

来自分类Dev

找不到符号变量... V 扩展类中声明的对象

来自分类Dev

Java:GroovyClassLoader:在 Groovy 类中找不到方法的符号

来自分类Dev

找不到符号类生成器

来自分类Dev

找不到Dagger 2的符号类“ Generated”

来自分类Dev

Java-找不到并发符号类

来自分类Dev

找不到符号类货币(枚举)

来自分类Dev

找不到符号-类Iterator [Java]

来自分类Dev

数据绑定:找不到符号类BR

来自分类Dev

即使存在引用的类也找不到符号

来自分类Dev

错误:找不到符号类编译

来自分类Dev

Android Studio:找不到符号类

来自分类Dev

错误:找不到符号类 onClickListner

来自分类Dev

错误错误:找不到符号类 GithubRepoAdapter