【发布时间】:2016-11-18 02:11:39
【问题描述】:
好的,所以我现在的问题是我的老师要我们做 3 节课。一个类(PlayingCard)为每张牌返回一个等级和花色,这是我开始工作的。另一个,deckofplayingcards,应该使用 52 个扑克牌对象数组的 2 个实例变量,以及牌组中最上面一张牌的索引。我的构造函数给我带来了问题。我将我的值作为字符串从 PlayingCard 传回,并且我需要将一组唯一对象卡声明为这些字符串。至少可以说,它不起作用。我附上了他具体要求的照片。 H.W. assignment descirption
我现在的问题是,我不能使对象数组(在代码末尾的 DeckOfPlayingCards 中)等于字符串(在 PlayingCard 中的 finalValue 方法中生成)。请问有什么帮助吗?此外,我的硬件/代码的任何其他更正或提示将不胜感激。这是我的代码。它会在正常工作时返回,例如 1 of heart。 扑克牌:
public class PlayingCard {
private String suit;
private String rank;
public String getSuit(String suitCounter){
String newSuit = null;
switch(suitCounter){
case("S"):
newSuit = "Spades";
break;
case("H"):
newSuit = "Hearts";
break;
case("C"):
newSuit = "Clubs";
break;
case("D"):
newSuit = "Diamonds";
break;
}
suit = newSuit;
return suit;
}
public String getValue(int valueCounter){
String newValue = null;
switch(valueCounter){
case(1):
newValue = "Ace";
break;
case(2):
newValue = "2";
break;
case(3):
newValue = "3";
break;
case(4):
newValue = "4";
break;
case(5):
newValue = "5";
break;
case(6):
newValue = "6";
break;
case(7):
newValue = "7";
break;
case(8):
newValue = "8";
break;
case(9):
newValue = "9";
break;
case(10):
newValue = "10";
break;
case(11):
newValue = "Jack";
break;
case(12):
newValue = "Queen";
break;
case(13):
newValue = "King";
}
rank = newValue;
return rank;
}
public String finalValue(String passedSuit, int passedValue){
String newSuit = getSuit(passedSuit);
String newValue = getValue(passedValue);
return newValue + " of " + newSuit
}
}
DeckOfPlayingCards
public class DeckOfPlayingCards {
PlayingCard[] card = new PlayingCard[52];
PlayingCard cardTop = new PlayingCard();
DeckOfPlayingCards(){
cardTop = card[0];
String randomNumberResult=null;
String randomNum1 = null;
String newval=null;
int randomNumGen1 = (int)(Math.random() * (4-1))+1;
if(randomNumGen1==1){
newval = "H";
}
else if(randomNumGen1==2){
newval = "S";
}
else if(randomNumGen1==3){
newval = "C";
}
else if(randomNumGen1==4){
newval = "D";
}
randomNum1 = newval;
int randomNumGen2 = (int)(Math.random() * (13-1))+1;
int randomNum2 = randomNumGen2;
PlayingCard finalVal = new PlayingCard();
for(int i=0; i<card.length; i++){
card[i] = finalVal.finalValue(randomNum1, randomNum2);
}
}
}
【问题讨论】:
-
您的问题始于 PlayingCard —— getter 方法不应该需要参数。相反,您应该使用真正的 getter,以及设置字段的构造函数。
-
它比它需要的复杂得多。
-
我会为 Suit 使用枚举,为 Rank 使用枚举
标签: java arrays oop object random