扑克牌中的顺子(简单)

题目描述

从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。

示例1

输入: [1,2,3,4,5]
输出: True

示例2

输入: [0,0,1,2,5]
输出: True

  解释:大小王可以当任意牌,即可以当3、4与1、2、5构成顺子1、2、3、4、5

代码

class Solution {
    public boolean isStraight(int[] nums) {
        int king=0;//大小王的数量
        Arrays.sort(nums);//对数组进行排序
        for(int i=0;i<4;i++){
            if(nums[i]==0){
                king++;
            }else if(nums[i]==nums[i+1]){
                return false;//顺子不能有重复
            }
        }
        return nums[4]-nums[king]<5;//最大牌-最小排<5可以构成顺子
    }
}

### 回答1: 撰写一个扑克牌游戏的Java程序是一个有趣而又有吸引力的任务。要完成此任务,您需要了解Java的基础知识,比如变量、对象、类和循环等。您还需要了解程序的基本结构,以及如何在Java实现它们。您还可以使用现有的扑克牌游戏库,以便更轻松地实现扑克牌游戏。 ### 回答2: Java写一个扑克牌游戏可以通过使用面向对象的编程方法来实现。首先需要设计扑克牌的类,可以将扑克牌定义为一个具有花色和点数属性的对象。可以使用枚举类型来表示花色和点数。 接下来可以设计一副扑克牌的类,该类包含一定数量的扑克牌对象,并提供相关操作方法,如洗牌、发牌等。可以使用ArrayList来存储扑克牌对象。 在游戏类,可以实例化一副扑克牌对象,并进行洗牌操作。然后可以定义玩家类,该类具有手牌属性和相关操作方法。每个玩家可以从牌堆抽取一定数量的牌,并存储在手牌。 接下来可以定义游戏规则类,该类可以实现游戏的逻辑。可以定义发牌、出牌、判断胜负等方法。游戏的过程可以通过循环来实现,直到某个玩家手牌为空或达到游戏结束条件为止。 对于扑克牌的点数大小的判断,可以使用条件语句来实现,如if语句。可以根据具体的规则来判断两张牌的大小,并根据结果判定胜者。 由于扑克牌游戏涉及到多个类之间的交互,因此需要合理地使用构造方法、成员变量和成员方法来实现类之间的通信和操作。 最后,在游戏类的主方法,可以实例化扑克牌游戏对象,并调用相关方法来进行游戏的初始化和进行。可以使用控制台输出显示游戏结果,如每个玩家的手牌情况和最后的胜者。 通过以上步骤,就可以使用Java编写一个基本的扑克牌游戏。 ### 回答3: 扑克牌游戏是一个非常有趣的游戏,可以用Java来实现。以下是一个简单扑克牌游戏的示例代码: 1. 首先,我们需要定义一个扑克牌的类。这个类应该包含花色和点数两个属性,并且需要有相应的getter和setter方法。 ``` public class PlayingCard { private String suit; // 花色 private int rank; // 点数 public String getSuit() { return suit; } public void setSuit(String suit) { this.suit = suit; } public int getRank() { return rank; } public void setRank(int rank) { this.rank = rank; } } ``` 2. 接下来,我们需要创建一副扑克牌并洗牌。我们可以使用一个数组来表示一副扑克牌,并使用随机数来实现洗牌。 ``` public class PokerGame { private static final String[] SUITS = {"红桃", "黑桃", "方块", "梅花"}; private static final int[] RANKS = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; public static void main(String[] args) { PlayingCard[] deckOfCards = new PlayingCard[52]; int index = 0; // 创建一副扑克牌 for (String suit : SUITS) { for (int rank : RANKS) { PlayingCard card = new PlayingCard(); card.setSuit(suit); card.setRank(rank); deckOfCards[index++] = card; } } // 洗牌 for (int i = 0; i < deckOfCards.length; i++) { int j = (int) (Math.random() * (i + 1)); PlayingCard temp = deckOfCards[i]; deckOfCards[i] = deckOfCards[j]; deckOfCards[j] = temp; } } } ``` 3. 玩家可以从洗好的牌堆抽取手牌。我们可以使用一个列表来表示玩家的手牌,并通过随机数从牌堆抽取指定数量的牌。 ``` import java.util.ArrayList; import java.util.List; public class PokerGame { // ... public static List<PlayingCard> dealHand(PlayingCard[] deck, int numCards) { List<PlayingCard> hand = new ArrayList<>(); for (int i = 0; i < numCards; i++) { hand.add(deck[i]); } return hand; } public static void main(String[] args) { // ... // 抽取玩家的手牌 int numCardsPerHand = 5; List<PlayingCard> hand = dealHand(deckOfCards, numCardsPerHand); } } ``` 4. 玩家可以出牌,并进行比较大小。我们可以定义一些方法来判断出牌的类型(如顺子、同花等),然后比较牌型的大小。 以上是一个简单扑克牌游戏的实现,你可以根据需求进一步完善。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值