首页 > 解决方案 > 从字符串数组索引中取数字,将它们相乘?

问题描述

因此,在这种情况下,我有一个包含多张卡片的数组。这些卡在每个索引中的排名分别为 S1R1、S1R2、S1R3、S2R1、S2R2、S2R3。我需要能够从每个索引位置提取两个数字并将它们相乘并最终将它们相加。

For example, 
position 0 would be 1 * 1 = 1
position 1 would be 1 * 2 = 2
position 2 would be 1 * 3 = 3
etc. etc.

此示例的代码会根据用户输入进行更改,因此很难为您提供可以使用的代码。

public void createDeckofCards() {
    SizeOfDeck = NumberOfRanks * NumberOfSuits;

    Cards newCard = new Cards();

    newCard.setCards ( NumberOfRanks, NumberOfSuits );

    newDeck = new String [ SizeOfDeck ];


    int counter = 0;
    for (int whatSuit = 1; whatSuit <= NumberOfSuits; whatSuit++) {
        for (int rank = 1; rank <= NumberOfRanks; rank++) {
            newDeck[counter++] = newCard.createCard(rank, whatSuit);
        }
    } 
}

这就是调用方法 createCard() 的原因,该方法根据用户输入的卡片数量创建每张卡片。所以 newDeck[] 包含我需要分解成数字并最终总结的所有这些卡片。(制作 100,000 手牌的直方图)

感谢您的宝贵时间,我感谢您的任何意见

标签: java

解决方案


使您的卡片成为Card具有花色和等级属性的对象(也许)。给它返回方法:

  • 符号形式(toString是一个逻辑选择):return "S" + suit + "R" + rank;
  • 值形式 ( getValue()):return suit * rank;

有了它,您可以创建一个数组Card而不是一个数组String

如果您需要将符号表示(“S1R7”、“S3R9”)转换为物理对象的能力,请创建一个Map<String, Card>. 您可以使用map.put(card.toString(), card);.

要查找您只需要的卡Card card = map.get("S1R2"); 然后该值可用作card.getValue()


推荐阅读