读一张牌并加点

时间:2014-03-14 23:20:58

标签: java split add

我是新手,我在为新任务构建解决方案时遇到了一些问题。我无法弄清楚如何根据诉讼中的牌数添加积分,这是问题的空白,单身和双重部分。我在这里发布了所有问题。有谁能请给我一些想法?我将不胜感激。

在纸牌游戏中,每个玩家的手牌由13张牌组成。每手牌都有一个总分 值由具有分值的卡数决定。这些卡是 值得一提的是Ace(4分),King(3分),Queen(2分)和Jack(1分)。 其他卡(2,3,4,5,6,7,8,9,10)没有分值。每种类型有四种 卡,四件衣服各一件。这些套装被称为球杆(C),钻石(D),心形 (H)和黑桃(S)。同样,每个具有空隙的套装(3分)分配分数, 单身(2分)或双分(1分)。西装中的空白意味着没有 那套衣服的卡片(例如没有黑桃的手)。西装中的单件意味着有 该套装中只有一张牌(例如只有一枚钻石的牌)。穿西装的双人 意味着该套装中只有两张牌。 编写一个程序,以字符串的形式读取一组十三张卡,然后评估 手中的点数。套装将按字母顺序增加。 每件套装内都没有重复的卡片。 输出是手和点值,如下表所示。您的 输出应按照与输入相同的顺序列出卡。注意,10表示为 输入和输出中的字符T.输入是从键盘输出到 屏幕。

示例会话

Enter cards:
C258TJKD69QAHSTJA

Cards Dealt     Points
Clubs 2 5 8 T J K   4
Diamonds 6 9 Q A    6
Hearts              3
Spades T J A        5
            Total  18

这是我到目前为止所做的: 我无法弄清楚如何将我的输入分成单个套装,以便我可以计算每个套件的卡数并添加到点。任何帮助将不胜感激

  for (int i=0; i<cards.length(); i++) {
        letter= cards.substring(i,i+1);

        if (letter.equals("C")) {
            System.out.print("\nClub");
            total= total + points;
            points=0;
        }

        else if (letter.equals("D")) {
            System.out.print("\nDiamonds");
            total= total + points;
            points=0;
        }

        else if (letter.equals("H")) {
            System.out.print("\nHearts");
            total= total + points;
            points=0;
        }

        else if (letter.equalsIgnoreCase("S")) {
            System.out.print("\nSpades");
            total= total + points;
            points=0;
        }

        else if (letter.equalsIgnoreCase("K")) {
            points=points+3;
            System.out.print(" K");
        }

        else if (letter.equalsIgnoreCase("A")) {
            points=points+4;
            System.out.print(" A");
        }

        else if (letter.equalsIgnoreCase("Q")) {
            points=points+2;
            System.out.print(" Q");
        }

        else if (letter.equalsIgnoreCase("J")) {
            points++;
            System.out.print(" J");
        }

        else {
            System.out.print(" " + letter);
        }
    }
   total=total+points;
   System.out.println("\nGrand total\t" + total);
}

} }

1 个答案:

答案 0 :(得分:1)

在现实生活中,你从来没有像在编码课中那样获得一套好的规范。

将问题描述分解为单个句子,并考虑如何满足每个句子的要求。

  

在纸牌游戏中,每位玩家的手牌由13张牌组成。

好的,我们将不得不为13张卡提供存储空间。列表可能就足够了。

  

每只手的总分值由具有分值的牌数决定。

好的,我们将不得不计算点值。听起来有些数学会参与其中。

  

值得分的牌是Ace(4分),King(3分),Queen(2分)和Jack(1分)。其他卡(2,3,4,5,6,7,8,9,10)没有分值。

好的,我们必须将卡片与积分相关联。地图可能就足够了。

  

每种类型的卡有四种,四种套装各一种。这些套装被称为球杆(C),钻石(D),心形(H)和黑桃(S)。

好的,这是一副扑克牌。我熟悉一副扑克牌。

  

同样,为每个具有空白(3个点),单个(2个点)或双重(1个点)的套装指定分数。套装中的空白意味着没有该套装的牌(例如没有黑桃的牌)。套装中的单件意味着该套装中只有一张牌(例如只有一枚钻石的牌)。套装中的双重装置意味着该套装中只有两张牌。

哇,这有点复杂。我如何满足其他要求,然后我可以回到这个。

现在,看起来我必须通过该卡片列表并检查这些条件。

  

编写一个程序,以字符串的形式读取一组十三张卡片,然后评估手中的点数。套装将按字母顺序增加。每件套装内都没有重复的卡片。

好的,我将要有一个特定的字符串输入,我将不得不分解成单个卡片。也许我应该写一个Card类来保持价值和诉讼。

  

输出是指针,表格中显示的点值如下所示。您的输出应按照与输入相同的顺序列出卡。注意,输入和输出中的字符T表示10。

好的,我知道输出应该是什么样的。我最好小心T(10)。我必须使用List来保存Card实例,因为我必须保持输入顺序。

  

输入来自键盘,输出到屏幕。

我可以使用Scanner作为输入,使用System.out作为输出。我知道该怎么做。

我迫不及待地开始了!

这就是你将问题分解成足够小的步骤以便解决问题的方法。祝你好运。