我不知道我做错了什么。我正在编写一个带有卡片和手工课程的Java程序。当我运行我的主程序时,它只打印出null
import java.util.ArrayList;
public class Hand {
//Field
public String [] array;
private ArrayList<String> cards = new ArrayList<String>();
//Constructor
public Hand(String [] array) {
this.array = array;
}
//Methods
public void addCard(String card){
cards.add(card);
}
public void removeCard(String card){
cards.remove(card);
}
public static void printHand (){
System.out.print(Card.printCard());
}
public class Card {
//fields
public static String num2rank, rank2abbrv, num2suit, suit2abbrv;
//constructor
public Card (String num2rank,String rank2abbrv,String num2suit,
String suit2abbrv){
this.num2suit = num2suit;
this.num2rank = num2rank;
this.rank2abbrv = rank2abbrv;
this.suit2abbrv = suit2abbrv;
}
//Methods
public static String getRank(){
return num2rank;
}
public static String getSuit(){
return num2suit;
}
public static String getName(){
String result = "";
String rank = getRank();
String suit = getSuit();
result += rank + " of " + suit;
return result;
}
public static String getAbbrev(){
String result = "";
String rank = rank2abbrv;
String suit = suit2abbrv;
result += rank + suit;
return result;
}
public static String printCard(){
String results = "";
results += "Printing Hand: " + getAbbrev();
results += "\n" + getName();
return results;
}
}
public class main {
public static void main(String[] args) {
Hand h = new Hand((new String []{"3c", "4s","5d","6h","7h"}));
h.printHand();
}
}
这些都是我的手牌和卡牌。等级和套装类只是卡片的案例陈述以及它们的套装和等级。当我运行main时,它打印出null。我希望它打印出来例如&#34; 7s&#34;和&#34;七颗心&#34;
答案 0 :(得分:0)
首先,您的代码中没有Card
的实例。
Hand类有一个数组和一个字符串列表
public String [] array;
private ArrayList<String> cards = new ArrayList<String>();
你应该只选择一个,并相应地更新构造函数
public Hand(String [] array) {
this.array = array;
}
现在,如果您想使用Card
,请更改这些方法以接受一个
public void addCard(Card card){
cards.add(card);
}
public void removeCard(Card card){
cards.remove(card);
}
(您需要更改列表类型,并且remove方法将无法按您认为的方式工作,因为您尚未定义的对象相等,但这些是未来的问题)
我假设您希望printHand()
实际打印手,对吗?所以你需要一个循环,而不仅仅是打印一张卡。
就Card类而言,您几乎可以完全删除该类中的static
关键字 - 您需要实例方法和变量(每个对象),而不是类级别(所有卡共享相同)值)。
最后,你需要在某个时候制作一个new Card(...)
。
像这样的东西(部分伪代码)
List<Card> cards = new ArrayList<>();
Hand h = new Hand(cards);
h.addCard(new Card(...));
h.printHand();