Java 如何将整数值转换为内容不同的字符串

Java 如何将整数值转换为内容不同的字符串,java,string,integer,blackjack,Java,String,Integer,Blackjack,很抱歉,如果这个问题让人困惑,但我正在制作一个小的21点程序来测试我的java技能,到目前为止,我遇到了一个我想不出解决办法的问题 目前,我有一个为游戏创建卡片的卡片类,我有一个设置在整数值1-14之间的随机数生成器。但是,我如何编写一个方法来获取该整数值,并将其输出,如果整数值为11,字符串值将显示该卡为插孔,而不是11卡,以此类推 不幸的是,这是我目前所拥有的一切 private void assignCard(){ for(int i = 0; i < cardInH

很抱歉,如果这个问题让人困惑,但我正在制作一个小的21点程序来测试我的java技能,到目前为止,我遇到了一个我想不出解决办法的问题

目前,我有一个为游戏创建卡片的卡片类,我有一个设置在整数值1-14之间的随机数生成器。但是,我如何编写一个方法来获取该整数值,并将其输出,如果整数值为11,字符串值将显示该卡为插孔,而不是11卡,以此类推

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

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

            }
        }
    }
private-void-assignCard(){
for(int i=0;i=11){
}
}
}
我这里使用的方法的要点是遍历玩家手中的牌的内容,检查它们是否在11以上,这样就可以开始排序过程,在打印给用户的字符串值中,哪个数字对应正确的牌类型(杰克、皇后等)

尽管如此,我仍然只是一个编程新手,所以这个项目可能超出了我的技能水平,但是任何相关的建议/批评都非常感谢

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

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

    System.out.println(cards[11 - 1]);
这样的解决方案允许您以后国际化卡名

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

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

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

由于这样的解决方案允许您以后国际化卡名

我不能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);
        }
    }
}
私有静态无效分配卡(int[]cardInHand){
for(int i=0;i2和卡地汉[i]<11){
系统输出打印LN(i);
}
}
}

我不能100%确定您要求的是什么,但假设您希望接收INT数组并打印出卡的名称,这应该可以做到

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);
        }
    }
}
私有静态无效分配卡(int[]cardInHand){
for(int i=0;i2和卡地汉[i]<11){
系统输出打印LN(i);
}
}
}

这里有一个名为Card的类,我们在其中为每张卡创建一个映射器。请注意,对于joker只使用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;
    }

}

这里有一个名为Card的类,我们在其中为每张卡创建一个映射器。请注意,对于joker只使用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;
    }

}

不知道您在寻找什么,像
stringcardname(intcardd)
这样的方法?这很简单。如果你不能做到这一点(仅仅是几个
If
语句),那么你可能就太深了。你真正应该做的是,如果你的卡片类有一个整数表示,你应该有一个方法,或者更好的是,一个变量,这是该卡的value@RAZ_Muh_Taz这就是我心中的想法……也许我问题的措辞很糟糕。您将如何实现它?不知道您在寻找什么,一种类似
stringcardname(intcardd)
的方法?这很简单。如果你不能做到这一点(仅仅是几个
If
语句),那么你可能就太深了。你真正应该做的是,如果你的卡片类有一个整数表示,你应该有一个方法,或者更好的是,一个变量,这是该卡的value@RAZ_Muh_Taz这就是我心中的想法……也许我问题的措辞很糟糕。你将如何实现这一点?我来自
1
的地方称为
ace
我来自
1
的地方称为
ace