简述
生成一副扑克牌,然后洗牌,将洗牌进行排序后的结果输出
洗牌思路
扑克牌基本情况:一副牌有54张:大小王,四种类型:红桃(Hearts)、方块(Diamonds)、梅花(Clubs)、黑桃(Spades),每种类型有13张牌(A、2、3、4、5、6、7、8、9、10、J、Q、K)。
1、把一张牌看作一个对象Card,该对象有类型属性type、大小属性size,即定义一个Card类,该类包含type和size属性
2、初始化扑克牌的类型colors[] = {“♠”, “♥”, “♦”, “♣”}
初始化牌的大小numbers[] = {“A”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”,“J”,“Q”,“K”}
3、用一个List接收54张扑克牌
4、类型和大小进行双重循环生成扑克牌
5、打乱扑克牌(洗牌):集合类中有shuffle()方法
代码块
import java.sql.ClientInfoStatus;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public static void main(String[] args){
List<String> pokes = new ArrayList<>();
List<String> colors = new ArrayList<>();
List<String> numbers = new ArrayList<>();
colors.add("♥");
colors.add("♠");
colors.add("♦");
colors.add("♣");
numbers.add("A");
for(int i=2;i<=10;i++){
numbers.add(i+"");
}
numbers.add("J");
numbers.add("Q");
numbers.add("K");
for(String c:colors){
for(String n:numbers){
String pai=c+n;
pokes.add(pai);
}
}
pokes.add("大");
pokes.add("小");
Collections.shuffle(pokes);
ArrayList<String> x = new ArrayList<>();
ArrayList<String> y = new ArrayList<>();
ArrayList<String> z = new ArrayList<>();
ArrayList<String> a = new ArrayList<>();
for(int i=0;i<pokes.size();i++){
String pai = pokes.get(i);
if(i>=51){
a.add(pai);
}
else{
if(i%3==0){
x.add(pai);
}
else if (i%3==1){
y.add(pai);
}
else{
z.add(pai);
}
}
}
排列思路
1、按照手机游戏上的排序顺序,依次为大小王,2,A,K,Q,J,10,9,8,7,6,5,4,3。
2、因牌中带有字母和图案,不易直接进行大小比较和排列,我们采用将不规则卡片(大小王,A,K,Q,J)改成数字进行比较排列。
3、交换函数的编写。
代码块
private static<XXX> void JH(List<XXX> list, int a,int b){
XXX xxx=list.get(a);
list.set(a,list.get(b));
list.set(b,xxx);
}
public static ArrayList<String> LiPai(ArrayList<String> list){
ArrayList<Integer> sz=new ArrayList<>();
int x=-1;
for(int i=0;i<list.size();i++){
if (list.get(i).equals("大")){
x=100;
}
else if(list.get(i).equals("小")){
x=99;
}
else{
if(list.get(i).substring(1).equals("2")){
x=90;
}
else if(list.get(i).substring(1).equals("A")){
x=85;
}
else if(list.get(i).substring(1).equals("K")){
x=80;
}
else if(list.get(i).substring(1).equals("Q")){
x=75;
}
else if(list.get(i).substring(1).equals("J")){
x=70;
}
else{
x=Integer.parseInt( list.get(i).substring(1))*4;
}
if(list.get(i).substring(0,1).equals("♠")){
x+=4;
}
else if(list.get(i).substring(0,1).equals("s")){
x+=3;
}
else if(list.get(i).substring(0,1).equals("♦")){
x+=2;
}
else if(list.get(i).substring(0,1).equals("♥")){
x+=1;
}
}
sz.add(x);
}
for(int i=list.size();i>1;i--){
for(int j=0;j<i-1;j++){
if(sz.get(j)<sz.get(j+1)){
JH(sz,j,j+1);
JH(list,j,j+1);
}
}
}
return list;
}
#其中x只要满足大小排列的即可
完整代码
import java.sql.ClientInfoStatus;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class DouDiZhu {
private static<XXX> void JH(List<XXX> list, int a,int b){
XXX xxx=list.get(a);
list.set(a,list.get(b));
list.set(b,xxx);
}
public static ArrayList<String> LiPai(ArrayList<String> list){
ArrayList<Integer> sz=new ArrayList<>();
int x=-1;
for(int i=0;i<list.size();i++){
if (list.get(i).equals("大")){
x=100;
}
else if(list.get(i).equals("小")){
x=99;
}
else{
if(list.get(i).substring(1).equals("2")){
x=90;
}
else if(list.get(i).substring(1).equals("A")){
x=85;
}
else if(list.get(i).substring(1).equals("K")){
x=80;
}
else if(list.get(i).substring(1).equals("Q")){
x=75;
}
else if(list.get(i).substring(1).equals("J")){
x=70;
}
else{
x=Integer.parseInt( list.get(i).substring(1))*4;
}
if(list.get(i).substring(0,1).equals("♠")){
x+=4;
}
else if(list.get(i).substring(0,1).equals("s")){
x+=3;
}
else if(list.get(i).substring(0,1).equals("♦")){
x+=2;
}
else if(list.get(i).substring(0,1).equals("♥")){
x+=1;
}
}
sz.add(x);
}
for(int i=list.size();i>1;i--){
for(int j=0;j<i-1;j++){
if(sz.get(j)<sz.get(j+1)){
JH(sz,j,j+1);
JH(list,j,j+1);
}
}
}
return list;
}
public static void main(String[] args){
List<String> pokes = new ArrayList<>();
List<String> colors = new ArrayList<>();
List<String> numbers = new ArrayList<>();
colors.add("♥");
colors.add("♠");
colors.add("♦");
colors.add("♣");
numbers.add("A");
for(int i=2;i<=10;i++){
numbers.add(i+"");
}
numbers.add("J");
numbers.add("Q");
numbers.add("K");
for(String c:colors){
for(String n:numbers){
String pai=c+n;
pokes.add(pai);
}
}
pokes.add("大");
pokes.add("小");
// System.out.println(pokes);
Collections.shuffle(pokes);
// System.out.println(pokes);
ArrayList<String> x = new ArrayList<>();
ArrayList<String> y = new ArrayList<>();
ArrayList<String> z = new ArrayList<>();
ArrayList<String> a = new ArrayList<>();
for(int i=0;i<pokes.size();i++){
String pai = pokes.get(i);
if(i>=51){
a.add(pai);
}
else{
if(i%3==0){
x.add(pai);
}
else if (i%3==1){
y.add(pai);
}
else{
z.add(pai);
}
}
}
x=LiPai(x);
y=LiPai(y);
z=LiPai(z);
a=LiPai(a);
System.out.println(x);
System.out.println(y);
System.out.println(z);
System.out.println(a);
}
}