【Java】扑克牌の顺子Judge
生活随笔
收集整理的這篇文章主要介紹了
【Java】扑克牌の顺子Judge
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目要求
(這題自己編著玩的)
現(xiàn)有一副撲克牌,不分花色,分別是 A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, King 。
要求編寫(xiě)一個(gè)判斷抽到的n張牌是不是順子的程序(王不算順子里的Part)。
分析
由于 A < 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < 10 < J < Q < K,我們要用Character肯定不好直接處理,因?yàn)锳與2、10與J不連續(xù),10也不是char,更何況還有King。
所以我就建立一個(gè)映射關(guān)系的HashMap,用于查找。
將A定義為1,J定義為11,Q定義為12,K定義為13。
順子必須是5張牌以上,所以先輸入的num不足5就Pass。
接下來(lái)把獲取的卡放進(jìn)Set里,如果Map里沒(méi)有,就不能湊成順子。還要判重,如果重復(fù)就不是順子。
最后做一下數(shù)據(jù)統(tǒng)計(jì),因?yàn)橛昧薚reeSet就完成了排序嘛,所以保證每一個(gè)輸出的數(shù)值都是前一個(gè)的值+1,就完事。
思路不一定是最簡(jiǎn),只是我的一個(gè)想法,有更好的方法還請(qǐng)多多指教,感謝。
實(shí)現(xiàn)代碼(Java語(yǔ)言描述)
import java.util.*;public class CardsTest {public static void main(String[] args) {Map<String, Integer> map = new HashMap<>(13);map.put("A", 1);map.put("2", 2);map.put("3", 3);map.put("4", 4);map.put("5", 5);map.put("6", 6);map.put("7", 7);map.put("8", 8);map.put("9", 9);map.put("10", 10);map.put("J", 11);map.put("Q", 12);map.put("K", 13);Set<Integer> set = new TreeSet<>();Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();if (num < 5) {System.out.println("NO");return;}for (int i = 0; i < num; i++) {String input = scanner.next();if (!map.containsKey(input)) {System.out.println("NO");return;}int card = map.get(input);if (set.contains(card)) {System.out.println("NO");return;}set.add(card);}scanner.close();int prev = 0, counter = 0;for (int i : set) {if (counter == 0) {prev = i;counter++;} else {if (prev == i-1) {prev = i;} else {System.out.println("NO");return;}}}System.out.println("YES");} }總結(jié)
以上是生活随笔為你收集整理的【Java】扑克牌の顺子Judge的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Spring使用JDBC访问MySQL数
- 下一篇: 你知道考的是平方数吗(记洛谷P1876题