纸牌识别问题的JAVA实现

简化描述

四种花色:分别用大写字母 P,K,H,T 表示

13种点数:  1-13

纸牌可以用ABC 的形式来表示:A 代表花色,BC代表数字,如果数字小于 10,会有一位补 0。

eg:花色是 P,数字是 9 的纸牌会表示成 P09。

一副完整的纸牌:13*4=52

要求:

你的程序要读入一个字符串,表示缺少的纸牌有哪些。

如果包含相同的纸牌(花 色数字都相同)输出 GRESKA,否则输出每种花色剩余的纸牌数量。

示例分析:

输入:P01K02H03H04

第一步:分割字符串

P01  K02  H03  H04  (每三个分为一组)

纸牌识别问题的JAVA实现

 

第二步:查重

利用set容器的特性:无重复性

纸牌识别问题的JAVA实现

 

如果set的大小等于s数组的大小,则没有重复元素,否则有重复元素

第三步:确定每种花色剩余的个数

纸牌识别问题的JAVA实现

 

第四步:完整代码

 

package 程序艺术方法实验;

 

import java.util.HashSet;

import java.util.Scanner;

import java.util.Set;

 

// B 纸牌识别

public class Card {

    public static void main(String[] args) {

        String str;

        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入字符串:");

        str = scanner.nextLine();

        split(str);

    }

 

    public static void split(String str) {

        String s[] = new String[str.length() / 3];//声明一个字符串数组保存分割出的字符串

        int n = 0;//计数

        for (int i = 0; i < str.length() / 3; i++) {

            s[i] = str.substring(n, n + 3);//0开始每3个分割到一个字串保存进s[]数组

            n = n + 3;

        }

        int count = 0;

        Set<String> set = new HashSet<String>();//声明一个泛型为String类型的set容器

        for (String string : s)

            set.add(string);//将前面分割出的字符串添加进set容器中

        if (set.size() == s.length) {//无重复元素

            int p = 13;//记录牌的数量

            int k = 13;

            int h = 13;

            int t = 13;

            for (String string : s) {//遍历字符串数组中的所有元素

                switch (string.charAt(0)) {//判断每个元素第一个英文字母

                    case 'P':

                        p--;

                        break;

                    case 'K':

                        k--;

                        break;

                    case 'H':

                        h--;

                        break;

                    case 'T':

                        t--;

                        break;

                }

            }

            System.out.printf("%d %d %d %d", p, k, h, t);

        } else//有重复元素

            System.out.println("GRESKA");

    }

}

 

相关文章:

  • 2022-02-14
  • 2021-07-07
  • 2022-12-23
  • 2021-11-20
  • 2022-02-17
  • 2021-05-20
  • 2021-05-10
  • 2022-01-01
猜你喜欢
  • 2021-11-01
  • 2022-12-23
  • 2021-06-06
  • 2022-12-23
  • 2021-10-11
  • 2021-12-22
  • 2021-07-22
相关资源
相似解决方案