有13张扑克牌,怎样确定牌中有没有顺子(顺子:连续的5张牌)

有13张扑克牌,怎样确定牌中有没有顺子(顺子:连续的5张牌)

分析思路如下:

1.可能出现的牌为数字(2-10)、(J-K,A,大小王),先将不能直接作为数字排列的牌替换成数字;

2.将整个数组转换为数字类型;

3.将数组从小到大进行排序;

4.做出判断,当数组中连续的牌大于等于5张时(即后一张牌减去前一张牌的数字达到连续4组),即判断为有顺子。

具体代码如下:

package calculate;

public class Poker {

	public static void main(String[] args) {
		
		String[] poker=new String[] {"3","5","6","A","K","5","J","2","5","7","2","8","10"};
		int[] num=new int[poker.length];
		//将J,Q,K,A,2,大王,小王都转成数字
		for(int i=0;i<poker.length;i++) {
			if(poker[i]=="J") {
				poker[i]="11";
			}
			else if(poker[i]=="Q") {
				poker[i]="12";
			}
			else if(poker[i]=="K") {
				poker[i]="13";
			}
			else if(poker[i]=="A") {
				poker[i]="14";
			}
			else if(poker[i]=="2") {
				poker[i]="15";
			}
			else if(poker[i]=="minKing") {
				poker[i]="0";
			}
			else if(poker[i]=="maxKing") {
				poker[i]="0";
			}
		}
		//将字符串数组转变为数字数组
		for(int i=0;i<poker.length;i++) {
			num[i]=Integer.valueOf(poker[i]);
		}

		//将数组排序
		for(int i=0;i<num.length;i++) {
			for(int j=0;j<num.length-i-1;j++) {
				if(num[j]>num[j+1]) {
					int temp=num[j];
					num[j]=num[j+1];
					num[j+1]=temp;
				}
				
			}
		}
		//当数组中后一位减前一位数字=1连续超过4组,则判断有顺子,否则没有
		int count=1;
		for(int i=0;i<num.length-1;i++) {
			if(num[i+1]-num[i]==1) {
				count++;
				if(count>=4) {
					System.out.println("有顺子");
				}
				else {
					System.out.println("没有顺子");
				}
			}
			else if(num[i+1]-num[i]!=1) {
				count=0;
			}
			
		}
	}

}

猜你喜欢

转载自blog.csdn.net/dream_18/article/details/115356035
今日推荐