很抱歉,如果这个问题令人困惑,但到目前为止我正在制作一个小的二十一点程序来测试我的java技能,而且我遇到了一个我无法想到的问题。
目前,我有一个Card类为游戏创建卡片,我将随机数生成器设置为介于整数值1-14之间。但是,如何编写一个取整数值的方法,并输出如果整数值为11,字符串值将此卡显示为插孔,而不是11卡等等。
不幸的是,这就是我现在所拥有的一切。
private void assignCard(){
for(int i = 0; i < cardInHand.length; i++){
if(cardInHand[i] >= 11){
}
}
}
我在这里的方法的目的是在玩家手中查看牌的内容,并检查他们是否超过11,然后开始整理出哪个数字对应的过程以打印给用户的字符串值的正确卡片类型(插孔,女王等)。
说到这一切,我仍然只是编程的初学者,所以这个项目有可能超出我的技能水平,但是非常感谢任何类型的相关建议/批评。
答案 0 :(得分:2)
将卡片的“名称”保存在String数组中,如
int cardNum = 11;
String [] cards = new String [] {"ace", "two", "three", ..., "jack", "queen", "king"};
System.out.println(cards[11 - 1]);
正如这样的解决方案允许您稍后将卡名称国际化
答案 1 :(得分:1)
我不是百分之百确定你要求的是什么,但假设你想要获得一系列的整数并打印掉这些卡片的名称。
private static void assignCard(int[] cardInHand){
for(int i = 0; i < cardInHand.length; i++){
if(cardInHand[i] == 11){
System.out.println("Jack");
}
if(cardInHand[i] == 12){
System.out.println("Queen");
}
if(cardInHand[i] == 13){
System.out.println("King");
}
if(cardInHand[i] == 1 ){
System.out.println("Ace");
}
if(cardInHand[i] > 2 && cardInHand[i] < 11){
System.out.println(i);
}
}
}
答案 2 :(得分:0)
这是一个名为Card的类,我们为每张卡创建一个映射器。请注意,对于joker只使用0但在for循环中我从1开始不包括它,如输出中所示。希望这有帮助!
App.getAppInstance().getQuickSandRegular()
然后在主要方法中,您可以使用以下内容
import java.util.Arrays;
import java.util.HashMap;
public class Card {
public int cardV;
public String cardS;
private HashMap<Integer, String> cardMapper;
Card(int newCardValue){
//create our mapper first
cardMapper = createCardMapping();
cardV = newCardValue;
//once the mapper is created we can now figure out the string of our card
cardS = FindCardStringRep(cardV);
}
private String FindCardStringRep(int key)
{
String cardString = "Card Doesn't Exist";
if(cardMapper.containsKey(key))
{
cardString = cardMapper.get(key);
}
return cardString;
}
public HashMap<Integer, String> createCardMapping()
{
HashMap<Integer, String> mapper = new HashMap<>();
String[] cardNames = {"joker", "ace", "two", "three", "four", "five", "six", "seven",
"eight", "nine", "ten", "jack", "queen", "king"};
//go through and create a mapping of the indices of cardNames to the String representations
//Note 0 = joker, ace = 1, two = 2 and so on
//we start at 1 so we ignore the joker anyways
for(int intVal = 1; intVal < cardNames.length; intVal++)
mapper.put(intVal, cardNames[intVal]);
return mapper;
}
}
其中输出以下内容:
for(int i = 0; i < 20; i++)
{
Card card = new Card(i);
System.out.println("Card " + card.cardV + " is a " + card.cardS);
}