一个发牌的程序,拍光是拿在手上肯定还是不够的,我想给手牌排序 发牌程序 纸牌排序hashmaparraylist 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看了 比较器,实在是不知道怎么把arraylist拿到比较器里去重写方法API看得不是很懂 对楼主的程序改进了一下,增加了Card类表示牌,使用TreeSet而不是ArrayList,因为TreeSet有自动排序的功能,具体如下:import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.Scanner;import java.util.TreeSet; public class DouDz { public static void main(String args[]) { List<Card> list = new ArrayList<Card>(); list.add(new Card(1,1,"方块3")); list.add(new Card(1,2,"方块4")); list.add(new Card(1,3,"方块5")); list.add(new Card(1,4,"方块6")); list.add(new Card(1,5,"方块7")); list.add(new Card(1,6,"方块8")); list.add(new Card(1,7,"方块9")); list.add(new Card(1,8,"方块10")); list.add(new Card(1,9,"方块J")); list.add(new Card(1,10,"方块Q")); list.add(new Card(1,11,"方块K")); list.add(new Card(1,12,"方块A")); list.add(new Card(1,13,"方块2")); list.add(new Card(2,1,"梅花3")); list.add(new Card(2,2,"梅花4")); list.add(new Card(2,3,"梅花5")); list.add(new Card(2,4,"梅花6")); list.add(new Card(2,5,"梅花7")); list.add(new Card(2,6,"梅花8")); list.add(new Card(2,7,"梅花9")); list.add(new Card(2,8,"梅花10")); list.add(new Card(2,9,"梅花J")); list.add(new Card(2,10,"梅花Q")); list.add(new Card(2,11,"梅花K")); list.add(new Card(2,12,"梅花A")); list.add(new Card(2,13,"梅花2")); list.add(new Card(3,1,"红桃3")); list.add(new Card(3,2,"红桃4")); list.add(new Card(3,3,"红桃5")); list.add(new Card(3,4,"红桃6")); list.add(new Card(3,5,"红桃7")); list.add(new Card(3,6,"红桃8")); list.add(new Card(3,7,"红桃9")); list.add(new Card(3,8,"红桃10")); list.add(new Card(3,9,"红桃J")); list.add(new Card(3,10,"红桃Q")); list.add(new Card(3,11,"红桃K")); list.add(new Card(3,12,"红桃A")); list.add(new Card(3,13,"红桃2")); list.add(new Card(4,1,"黑桃3")); list.add(new Card(4,2,"黑桃4")); list.add(new Card(4,3,"黑桃5")); list.add(new Card(4,4,"黑桃6")); list.add(new Card(4,5,"黑桃7")); list.add(new Card(4,6,"黑桃8")); list.add(new Card(4,7,"黑桃9")); list.add(new Card(4,8,"黑桃10")); list.add(new Card(4,9,"黑桃J")); list.add(new Card(4,10,"黑桃Q")); list.add(new Card(4,11,"黑桃K")); list.add(new Card(4,12,"黑桃A")); list.add(new Card(4,13,"黑桃2")); list.add(new Card(5,14,"小王")); list.add(new Card(5,15,"大王")); Collections.shuffle(list); TreeSet<Card> playerFirst = new TreeSet<Card>(); TreeSet<Card> playerSecond = new TreeSet<Card>(); TreeSet<Card> playerThird = new TreeSet<Card>(); for (int i = 3; i < list.size(); i+=3) { playerFirst.add(list.get(i)); playerSecond.add(list.get(i+1)); playerThird.add(list.get(i+2)); } System.out.println("是否进行发牌?1(发牌)/0(结束)"); Scanner sc = new Scanner(System.in); int index = sc.nextInt(); if (index == 1) { System.out.println("玩家一的手牌"); for (Card card : playerFirst) { System.out.print(card.getDescription() + " "); } System.out.println(); System.out.println("玩家二的手牌"); for (Card card : playerSecond) { System.out.print(card.getDescription() + " "); } System.out.println(); System.out.println("玩家三的手牌"); for (Card card : playerThird) { System.out.print(card.getDescription() + " "); } System.out.println(); System.out.println("底牌"); System.out.println(list.get(0).getDescription() + " " + list.get(1).getDescription() + " " + list.get(2).getDescription()); } }}class Card implements Comparable{ private int corlor; //1:表示方块; 2:表示梅花; 3:表示红桃; 4:表示黑桃; private int point; //点数,1-13 private String description; //牌的描述,如“方块2” public Card(int corlor, int point, String description) { this.corlor = corlor; this.point = point; this.description = description; } public int getCorlor() { return corlor; } public void setCorlor(int corlor) { this.corlor = corlor; } public int getPoint() { return point; } public void setPoint(int point) { this.point = point; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } @Override public int compareTo(Object o) { Card card = (Card)o; if(this.point>card.point){ return 1; } else if(this.point<card.point){ return -1; } else{ if(this.corlor>card.corlor) return 1; else if(this.corlor<card.corlor) { return -1; } } return 0; } } import java.util.ArrayList;import java.util.Comparator;public class Pkcomparable implements Comparator<String> { @Override public int compare(String s1, String s2) { // TODO Auto-generated method stub ArrayList<String> shouP = new ArrayList<String>(); for(int i=0;i<8;i++){ shouP.add(String.valueOf(i+3)); } shouP.add("J"); shouP.add("Q"); shouP.add("K"); shouP.add("A"); shouP.add("2"); shouP.add("小王"); shouP.add("大王"); int a=0,b=0; if(s1.length()>2&&s2.length()>2){ a=shouP.indexOf(s1.substring(2)); b=shouP.indexOf(s2.substring(2)); }else if(s1.equals("大王")&&s2.equals("小王")){ a=15; b=14; }else if(s1.equals("小王")&&s2.equals("大王")){ a=14; b=15; }else if(s1.equals("小王")&&!s2.equals("大王")){ a=14; b=shouP.indexOf(s2.substring(2)); }else if(s1.equals("大王")&&!s2.equals("小王")){ a=15; b=shouP.indexOf(s2.substring(2)); }else if(!s1.equals("大王")&&s2.equals("小王")){ a=shouP.indexOf(s1.substring(2)); b=14; }else if(!s1.equals("小王")&&s2.equals("大王")){ a=shouP.indexOf(s1.substring(2)); b=15; } return a-b; }}哈哈哈哈哈 比较器终于搞出来了终于是我自己想出来了,楼上的想法 我也借鉴了哈,烤了代码先 java swing如何实现QQ聊天窗口 有没有了解清软国际培训的啊 强烈建议,JDK的帮助文件里应该写用法的例子.....大家讨论下 JBuilder 中的 DataExpress 控件和 dbswing 控件的问题(急) 一个不明白的打印 请问如何为plugin的项目写单元测试? 发现lomboz的一个大漏洞 就是有关jsp页面无法更新的问题 jtextfield如何定制输入 关于异常的一个问题,求高手。。 学习路线问题,向前辈们求教!! 用ObjectInputStream从文件读全部的学生类(只有学生类)。求指点 关于负数取模的问题(初学遇到的疑问)
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
import java.util.TreeSet;
public class DouDz {
public static void main(String args[]) {
List<Card> list = new ArrayList<Card>();
list.add(new Card(1,1,"方块3"));
list.add(new Card(1,2,"方块4"));
list.add(new Card(1,3,"方块5"));
list.add(new Card(1,4,"方块6"));
list.add(new Card(1,5,"方块7"));
list.add(new Card(1,6,"方块8"));
list.add(new Card(1,7,"方块9"));
list.add(new Card(1,8,"方块10"));
list.add(new Card(1,9,"方块J"));
list.add(new Card(1,10,"方块Q"));
list.add(new Card(1,11,"方块K"));
list.add(new Card(1,12,"方块A"));
list.add(new Card(1,13,"方块2"));
list.add(new Card(2,1,"梅花3"));
list.add(new Card(2,2,"梅花4"));
list.add(new Card(2,3,"梅花5"));
list.add(new Card(2,4,"梅花6"));
list.add(new Card(2,5,"梅花7"));
list.add(new Card(2,6,"梅花8"));
list.add(new Card(2,7,"梅花9"));
list.add(new Card(2,8,"梅花10"));
list.add(new Card(2,9,"梅花J"));
list.add(new Card(2,10,"梅花Q"));
list.add(new Card(2,11,"梅花K"));
list.add(new Card(2,12,"梅花A"));
list.add(new Card(2,13,"梅花2"));
list.add(new Card(3,1,"红桃3"));
list.add(new Card(3,2,"红桃4"));
list.add(new Card(3,3,"红桃5"));
list.add(new Card(3,4,"红桃6"));
list.add(new Card(3,5,"红桃7"));
list.add(new Card(3,6,"红桃8"));
list.add(new Card(3,7,"红桃9"));
list.add(new Card(3,8,"红桃10"));
list.add(new Card(3,9,"红桃J"));
list.add(new Card(3,10,"红桃Q"));
list.add(new Card(3,11,"红桃K"));
list.add(new Card(3,12,"红桃A"));
list.add(new Card(3,13,"红桃2"));
list.add(new Card(4,1,"黑桃3"));
list.add(new Card(4,2,"黑桃4"));
list.add(new Card(4,3,"黑桃5"));
list.add(new Card(4,4,"黑桃6"));
list.add(new Card(4,5,"黑桃7"));
list.add(new Card(4,6,"黑桃8"));
list.add(new Card(4,7,"黑桃9"));
list.add(new Card(4,8,"黑桃10"));
list.add(new Card(4,9,"黑桃J"));
list.add(new Card(4,10,"黑桃Q"));
list.add(new Card(4,11,"黑桃K"));
list.add(new Card(4,12,"黑桃A"));
list.add(new Card(4,13,"黑桃2"));
list.add(new Card(5,14,"小王"));
list.add(new Card(5,15,"大王"));
Collections.shuffle(list);
TreeSet<Card> playerFirst = new TreeSet<Card>();
TreeSet<Card> playerSecond = new TreeSet<Card>();
TreeSet<Card> playerThird = new TreeSet<Card>();
for (int i = 3; i < list.size(); i+=3) {
playerFirst.add(list.get(i));
playerSecond.add(list.get(i+1));
playerThird.add(list.get(i+2));
}
System.out.println("是否进行发牌?1(发牌)/0(结束)");
Scanner sc = new Scanner(System.in);
int index = sc.nextInt();
if (index == 1) {
System.out.println("玩家一的手牌");
for (Card card : playerFirst) {
System.out.print(card.getDescription() + " ");
}
System.out.println();
System.out.println("玩家二的手牌");
for (Card card : playerSecond) {
System.out.print(card.getDescription() + " ");
}
System.out.println();
System.out.println("玩家三的手牌");
for (Card card : playerThird) {
System.out.print(card.getDescription() + " ");
}
System.out.println();
System.out.println("底牌");
System.out.println(list.get(0).getDescription() + " " + list.get(1).getDescription() + " "
+ list.get(2).getDescription());
}
}
}class Card implements Comparable{ private int corlor; //1:表示方块; 2:表示梅花; 3:表示红桃; 4:表示黑桃;
private int point; //点数,1-13
private String description; //牌的描述,如“方块2”
public Card(int corlor, int point, String description)
{
this.corlor = corlor;
this.point = point;
this.description = description;
}
public int getCorlor() {
return corlor;
} public void setCorlor(int corlor) {
this.corlor = corlor;
}
public int getPoint() {
return point;
} public void setPoint(int point) {
this.point = point;
} public String getDescription() {
return description;
} public void setDescription(String description) {
this.description = description;
} @Override
public int compareTo(Object o) {
Card card = (Card)o;
if(this.point>card.point){
return 1;
}
else if(this.point<card.point){
return -1;
}
else{
if(this.corlor>card.corlor)
return 1;
else if(this.corlor<card.corlor)
{
return -1;
}
}
return 0;
}
}
import java.util.Comparator;
public class Pkcomparable implements Comparator<String> { @Override
public int compare(String s1, String s2) {
// TODO Auto-generated method stub
ArrayList<String> shouP = new ArrayList<String>();
for(int i=0;i<8;i++){
shouP.add(String.valueOf(i+3));
}
shouP.add("J");
shouP.add("Q");
shouP.add("K");
shouP.add("A");
shouP.add("2");
shouP.add("小王");
shouP.add("大王");
int a=0,b=0;
if(s1.length()>2&&s2.length()>2){
a=shouP.indexOf(s1.substring(2));
b=shouP.indexOf(s2.substring(2));
}else if(s1.equals("大王")&&s2.equals("小王")){
a=15;
b=14;
}else if(s1.equals("小王")&&s2.equals("大王")){
a=14;
b=15;
}else if(s1.equals("小王")&&!s2.equals("大王")){
a=14;
b=shouP.indexOf(s2.substring(2));
}else if(s1.equals("大王")&&!s2.equals("小王")){
a=15;
b=shouP.indexOf(s2.substring(2));
}else if(!s1.equals("大王")&&s2.equals("小王")){
a=shouP.indexOf(s1.substring(2));
b=14;
}else if(!s1.equals("小王")&&s2.equals("大王")){
a=shouP.indexOf(s1.substring(2));
b=15;
}
return a-b;
}
}哈哈哈哈哈 比较器终于搞出来了
终于是我自己想出来了,楼上的想法 我也借鉴了哈,烤了代码先