【问题标题】:How to convert integer value into a string but with different contents如何将整数值转换为字符串但内容不同
【发布时间】:2017-04-23 02:34:59
【问题描述】:

对不起,如果问题令人困惑,但到目前为止,我正在制作一个小型二十一点程序来测试我的 Java 技能,但我遇到了一个我想不出办法的问题。

目前,我有一个为游戏创建卡片的 Card 类,并且我将随机数生成器设置为介于 1-14 之间的整数值。但是,我如何编写一个方法来获取该整数值,并让它输出如果整数值为 11,则字符串值会将这张卡显示为插孔,而不是 11 卡等。

不幸的是,这就是我目前所拥有的一切。

private void assignCard(){
        for(int i = 0; i < cardInHand.length; i++){
            if(cardInHand[i] >= 11){

            }
        }
    }

我这里的方法的重点是遍历玩家手牌的内容,并检查它们是否在11以上,然后开始排序对应哪个数字的过程打印给用户的字符串值中的正确卡片类型(jack、queen 等)。

说了这么多,我仍然只是编程的初学者,所以这个项目有可能超出我的技能水平,但任何相关的建议/批评都非常感谢。

【问题讨论】:

  • 不知道你在找什么,像String cardname(int cardId)这样的方法?这很简单。如果你不能这样做(只是几个if 语句),那么你可能已经超出了你的深度。
  • 你真正应该做的是,如果你的 Card 类有一个整数表示,你应该有一个方法,甚至更好,一个变量,这是该卡值的字符串表示
  • @RAZ_Muh_Taz 这就是我的想法......也许我的问题的措辞很差。您将如何实施?

标签: java string integer blackjack


【解决方案1】:

将卡片的“名称”保存在字符串数组中,例如

    int cardNum = 11;
    String [] cards = new String [] {"ace", "two", "three", ..., "jack", "queen", "king"};

    System.out.println(cards[11 - 1]);

因为这样的解决方案允许您稍后将卡名称国际化

【讨论】:

    【解决方案2】:

    我不能 100% 确定您要的是什么,但假设您想接收整数数组并打印出应该这样做的卡片名称。

    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);
            }
        }
    }
    

    【讨论】:

    • 我来自1的地方叫做ace
    【解决方案3】:

    这是一个名为 Card 的类,我们在其中为每张卡片创建一个映射器。请注意,它只是将 0 用于小丑,但在 for 循环中,我从 1 开始不包括它,如输出所示。希望这会有所帮助!

    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;
        }
    
    }
    

    然后在 main 方法中你可以像下面这样

    for(int i = 0; i < 20; i++)
    {
        Card card = new Card(i);
    
        System.out.println("Card " + card.cardV + " is a " + card.cardS);
    }
    

    输出如下:

    Card 0 is a Card Doesn't Exist
    Card 1 is a ace
    Card 2 is a two
    Card 3 is a three
    Card 4 is a four
    Card 5 is a five
    Card 6 is a six
    Card 7 is a seven
    Card 8 is a eight
    Card 9 is a nine
    Card 10 is a ten
    Card 11 is a jack
    Card 12 is a queen
    Card 13 is a king
    Card 14 is a Card Doesn't Exist
    Card 15 is a Card Doesn't Exist
    Card 16 is a Card Doesn't Exist
    Card 17 is a Card Doesn't Exist
    Card 18 is a Card Doesn't Exist
    Card 19 is a Card Doesn't Exist
    

    【讨论】:

      猜你喜欢
      • 2014-05-18
      • 2017-06-11
      • 2020-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      • 1970-01-01
      相关资源
      最近更新 更多