import java.util.ArrayList;
public class Card {
int number;
String suit;
public Card(int number, String suit) {
this.number = number;
this.suit = suit;
}
public static void main(String[] args) {
String[] suit = {
"Clubs",
"Diamonds",
"Spades",
"Hearts"
};
String[] high = {
"Jack",
"Queen",
"King"
};
ArrayList<Card> deckOfCards = new ArrayList<Card>(52);
for (int j = 0; j < 4; j++) {
for (int i = 0; i < 13; i++) {
deckOfCards.add(new Card (i+1, suit[j]));
}
}
@Override
public String toString(Card card) {
this.suit = suit;
this.number = number;
String type;
if (number < 10) {
type = Integer.toString(number);
}
else {
type = high[i-number];
}
return suit + " of " + type;
}
}
}
所以我有一个名为card的对象,我想用底部的方法打印套装(字符串)和它上面的数字(int),但我不是百分之百确定如何做到这一点。不用说,底部的部分不编译或工作
由于
答案 0 :(得分:1)
这应该进入你的Card类:
@Override
public String toString() {
return String.valueOf(this.number) + " of " + this.suit;
}
像这样调用函数:
currentCard.toString();
或将其打印到控制台,如下所示:
System.out.println(currentCard.toString());
答案 1 :(得分:0)
toString方法不接受任何参数,应该在您的卡片对象中。它是对象的字符串表示。这些值由构造函数设置。
将套装和高数组放在顶部的卡片类中,使用其他变量,因此您的代码如下所示:
int number;
String cardSuit; //renamed this variable because you have an array with the same name
String[] suit = {
"Clubs",
"Diamonds",
"Spades",
"Hearts"
};
String[] high = {
"Jack",
"Queen",
"King"
};
@Override
public String toString()
{
String type;
if (number < 10) {
type = Integer.toString(number);
}
else {
type = high[i-number];
}
return "Suit " + this.suit + " and Number " + this.type;
}
备注:将变量设为私有并使用getter / setter设置和访问它们是一个好主意。此外,覆盖等于。如果您正在使用eclipse,它可以自动为您生成。