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"
};
ArrayList<Card> deckOfCards = new ArrayList<Card>(52);
for (int j = 0; j < 4; j++) {
for (int i = 0; i < 13; i++) {
deckOfCards.add(i+1, suit[j]);
}
}
System.out.println(deckOfCards);
}
}
我是方法的新手,我们需要创建一副牌,其中牌是方法而不是字符串或int等(方法牌是卡片)。不是100%肯定我做错了什么部分,但我一直收到错误:
Card.java:27: error: no suitable method found for add(int,String)
deckOfCards.add(i+1, suit[j]);
^
method List.add(int,Card) is not applicable
(argument mismatch; String cannot be converted to Card)
method AbstractList.add(int,Card) is not applicable
(argument mismatch; String cannot be converted to Card)
method ArrayList.add(int,Card) is not applicable
(argument mismatch; String cannot be converted to Card)
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
1 error
Michaels-MacBook-Air-2:Computer Science michaelzakariaie$
任何提示/帮助非常感谢,我很确定这是一个简单的错误,我只是在消隐
编辑:在添加卡时想出更改语法但是当我运行它时输出是giberish,有人知道如何修复它吗?
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"
};
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]));
}
}
// deckOfCards.add(new Card (1, "hi"));
System.out.println(deckOfCards);
}
}
新代码^
由于
答案 0 :(得分:3)
更改此行:
deckOfCards.add(i+1, suit[j]);
对此:
deckOfCards.add(new Card(i+1, suit[j]));
或者这个:
Card current = new Card(i+1, suit[j]);
deckOfCards.add(current);
我可能会在后面做,因为将每个动作放在自己的行上(即创建卡然后添加它)更容易阅读。它也更容易调试 - 在第一个选项中,如果你在该行上有错误,你无法确定它是否与创建卡或添加它有关。
答案 1 :(得分:1)
问题1
将实际的Card
对象添加到ArrayList<Card>
而不是String。
deckOfCards.add(new Card(i+1, suit[j]));
问题2
输出是乱码
您需要为toString
Card
方法
public class Card {
int number;
String suit;
public Card(int number, String suit) {
this.number = number;
this.suit = suit;
}
@Override
public String toString() {
return "Card{" +
"number=" + number +
", suit='" + suit + '\'' +
'}';
}
}
答案 2 :(得分:0)
deckOfCards.add(i+1, suit[j]);// Change this to ....
deckOfCards.add(i+1, new Card(i+1,suit[j]));
答案 3 :(得分:0)
卡不能成为一种方法。方法是动作,类是名词。
在您的示例中,您有一个Card类。实例化一张卡并将其添加到阵列列表中。
Card card = new Card(i+1, suit[j])
ArrayList使用用尖括号&lt;&gt;表示的泛型。泛型类型指定它包含Card类型的对象。您不能将String类型的Object插入该列表。