缺少的扑克牌【set】

通过老师的指导,本文使用Java集合Set来解决找缺失扑克牌的问题。Set的特点是无序且元素唯一,方便添加和删除。将所有扑克牌加入Set中,然后遍历输入的53张牌并移除,最后剩下的就是缺失的牌。测试输入一系列扑克牌后,结果显示缺失的牌是Joker。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路来源:老师博客
在此向老师学习,自己多努力!

一副扑克牌有54张牌,分别是红桃,黑桃,方片,梅花各13张,以及大小王,现在Alex有一副牌
只剩下53张了,给出这些牌,请问少了哪张牌。

牌的表示方法:
大王: Joker 小王: joker
其余的牌用花色+牌面大小表示,花色表示如下:
红桃: Heart 黑桃: Spade 方片: Diamond 梅花: Club
2~10的牌面直接用2,3,4,5,6,7,8,9,10 表示,其余的:
A: Ace J: Jack Q: Queen K: King
比如方片J用 DiamondJack 表示, 红桃A用 HeartAce表示

输入
一行53个字符串,表示53张牌
输出
一行输出少的那张牌

思路分析:
利用集合set做比较好,老师也是用的set 集合特点无序且元素唯一,容易删除也容易添加,不用考虑元素是否重复的问题, 关于数据结构,建议使用字符串类型表示
我们先将集合中添加所有的元素牌,然后输入53张牌,逐一抹去,剩下的一张牌就是少的那张牌了

代码如下:(Java实现)
package Exercises;

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class testBailian4020ThelackOfPocket {
    public static void main(String[] args) {
        String[]color=new String[]{ "Heart", "Spade", "Diamond", "Club"};
        String []point=new String[]{ "Ace" , "2", "3", "4", "5", "6", "7", "8", "9",  "10",  "Jack", 
                                    "Queen", "King"};

        Set<String> set=new HashSet<String>();
        set.add("Joker");
        set.add("joker");
        //组合牌并且放入集合当中
        for (int i = 0; i < color.length; i++) {
            for (int i1 = 0; i1 < point.length; i1++) {
                set.add(color[i]+point[i1]);
            }
        }

		//从键盘输入,注意是使用的next()函数 ,遇到空格自动转为下一次输入
        String instr;
        Scanner s=new Scanner(System.in);
        for (int i = 0; i < 53; i++) {
            instr=s.next();
            set.remove(instr);//抹去集合中存在的牌
        }
        //foreach遍历集合
        for (String outStr:set
             ) {
            System.out.println(outStr);

        }

    }

}

测试输入如下:
ClubQueen Club2 ClubAce SpadeAce Club10 Heart2 HeartJack Heart6 Heart4 Spade6 Diamond6 Spade7 Heart7 Spade10 DiamondJack SpadeKing Heart10 Spade2 Spade9 Diamond5 Club9 Spade8 DiamondAce Heart9 Heart5 Club8 Club7 ClubKing Club6 Club5 Club3 SpadeQueen Spade3 HeartAce SpadeJack Joker DiamondQueen Club4 Spade4 Diamond4 HeartQueen HeartKing Diamond2 Diamond10 DiamondKing Diamond3 Heart3 Diamond7 Diamond8 Spade5 ClubJack Heart8 Diamond9

结果:
joker

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值