java - 类卡不会转换为字符串
问题描述
我正在开发一个基本的扑克应用程序。Card 和 DeckOfCards 类在大多数情况下似乎都可以正常工作,但是当我尝试处理公共卡(板卡)时,会出现编译器错误。我有点困惑,因为在处理玩家的手时,我似乎在前面的 for 循环中做同样的事情。
卡.java:
public class Card {
private final String face;
private final String suit;
public Card(String cardFace, String cardSuit) {
this.face = cardFace;
this.suit = cardSuit;
}
public String toString() {
return face + suit;
}
}
DeckOfCards.java:
public class DeckOfCards {
private static final SecureRandom randomNumbers = new SecureRandom();
private static final int NUMBER_OF_CARDS = 52;
private Card[] deck = new Card[NUMBER_OF_CARDS];
private int currentCard = 0;
public DeckOfCards() {
String[] faces = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K"};
String[] suits = {"h", "c", "d", "s"};
for(int count = 0; count < deck.length; count++) {
deck[count] = new Card(faces[count % 13], suits[count/13]);
}
}
public void shuffle() {
currentCard = 0;
for (int first = 0; first < deck.length; first++) {
int second = randomNumbers.nextInt(NUMBER_OF_CARDS);
Card temp = deck[first];
deck[first] = deck[second];
deck[second] = temp;
}
}
public Card dealCard() {
if (currentCard < deck.length) {
return deck[currentCard++];
}
else {
return null;
}
}
}
DeckOfCardsTest.java:
public class DeckOfCardsTest {
public static void main(String[] args) {
DeckOfCards myDeckOfCards = new DeckOfCards();
myDeckOfCards.shuffle();
Scanner input = new Scanner(System.in);
System.out.printf("Enter number of players(max 10): ");
int numPlayers = input.nextInt();
if(numPlayers > 10)
numPlayers = 10;
String[] playerHand = new String[10];
String[] boardCards = new String[5];
for(int i = 0; i < numPlayers; i++) {
playerHand[i] = myDeckOfCards.dealCard() + " " + myDeckOfCards.dealCard();
System.out.printf("Player %d Hand: %s%n", (i + 1), playerHand[i]);
}
for(int i = 0; i < 5; i++) {
boardCards[i] = myDeckOfCards.dealCard();
//^This is the line that throws the error
}
System.out.printf("Flop: %s %s %s%n", boardCards[0], boardCards[1], boardCards[2]);
System.out.printf("Turn: %s%n", boardCards[3]);
System.out.printf("River: %s%n", boardCards[4]);
}
}
编译器错误是:
DeckOfCardsTest.java:25: error: incompatible types: Card cannot be converted to String
boardCards[i] = myDeckOfCards.dealCard();
^
解决方案
在您正在执行的第一个 for 循环中myDeckOfCards.dealCard() + " " + myDeckOfCards.dealCard()
,使用+ " "
将Card
返回的类转换dealCard
为 String。
因此,要解决您的问题,您可以执行dealCard().toString()
或dealCard() + ""
推荐阅读
- javascript - React - 在幻灯片之间转换的轮播,react-spring
- android - 是否可以构建一个安装 3 个 apk 的 android 应用程序,这些 apk 存储在应用程序本身内?
- sql - 创建表约束已损坏
- mysql - 多个 LIKE 运算符 ORDER BY Strongest
- python-3.x - 图像大小(以字节为单位),不保存到磁盘 Python
- c# - 在 DataGridView CellDoubleClick 从另一行返回数据
- google-maps-api-3 - @angular/google-maps 在生产中不起作用
- javascript - MongoDB 聚合 - 动态`$addField`
- java - 如何在 JFrame 中绘制圆圈而不覆盖paint(...) 或paintComponent(...)
- javascript - 如何对大文件使用 moo lexer(和 nearley)