我是新手,我在为新任务构建解决方案时遇到了一些问题。我无法弄清楚如何根据诉讼中的牌数添加积分,这是问题的空白,单身和双重部分。我在这里发布了所有问题。有谁能请给我一些想法?我将不胜感激。
在纸牌游戏中,每个玩家的手牌由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);
}
} }
答案 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作为输出。我知道该怎么做。
我迫不及待地开始了!
这就是你将问题分解成足够小的步骤以便解决问题的方法。祝你好运。