//Poker類
public?class?Poker?{
private?String[]?type={"方塊","梅花","紅桃","黑桃"};??//從小到大
private?String[]?value={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};??//從小到大
public?String[]?getType()?{
return?type;
}
public?void?setType(String[]?type)?{
this.type?=?type;
}
public?String[]?getValue()?{
return?value;
}
public?void?setValue(String[]?value)?{
this.value?=?value;
}
public?Poker()?{
}
}
//Player類
public?class?Player?{
private?int?ID;
private?String?name;
public?String?getName()?{
return?name;
}
public?void?setName(String?name)?{
this.name?=?name;
}
public?int?getID()?{
return?ID;
}
public?void?setID(int?iD)?{
ID?=?iD;
}
}
//主程序
import?java.util.Collections;
import?java.util.InputMismatchException;
import?java.util.LinkedList;
import?java.util.Scanner;
public?class?PokerList?{
/*
?*?【系統(tǒng)自動】創(chuàng)建撲克牌:
?*?黑桃2,黑桃3,黑桃4,黑桃5,黑桃6,黑桃7,黑桃8,黑桃9,黑桃10,黑桃J,黑桃Q,黑桃K,黑桃A
?*?紅桃2,紅桃3,紅桃4,紅桃5,紅桃6,紅桃7,紅桃8,紅桃9,紅桃10,紅桃J,紅桃Q,紅桃K,紅桃A
?*?梅花2,梅花3,梅花4,梅花5,梅花6,梅花7,梅花8,梅花9,梅花10,梅花J,梅花Q,梅花K,梅花A
?*?方塊2,方塊3,方塊4,方塊5,方塊6,方塊7,方塊8,方塊9,方塊10,方塊J,方塊Q,方塊K,方塊A
?*?創(chuàng)建2名玩家,編號分別是輸入字符串型
?*?洗牌:將順序打亂
?*?發(fā)牌:一人一張,每人發(fā)兩張
?*?比牌:比對兩人的最大牌,最大者勝。
?*?開牌:全部打印
?*/
@SuppressWarnings("resource")
public?static?void?main(String[]?args)?{
Poker?p=new?Poker();??//創(chuàng)建撲克牌實例
String[]?s1=p.getType();??//取撲克牌的花色類型
String[]?s2=p.getValue();??//取撲克牌的大小
LinkedList<String>?list=new?LinkedList<String>();??//限制為String類型
for(int?i=0;i<s1.length;i++){
for(int?j=0;j<s2.length;j++){
list.add(s1[i]+s2[j]);??//編輯撲克牌
}
}
System.out.println(list);??//展示撲克牌
LinkedList<String>?listA=new?LinkedList<String>();??//限制為String類型
for(int?i=0;i<s2.length;i++){
for(int?j=0;j<s1.length;j++){
listA.add(s1[j]+s2[i]);
}
}
System.out.println();
System.out.println("從小到大排序"+listA);??//從小到達排序撲克牌,以便后面使用indexof方法鎖定位置,比較大小
//分行展示打印撲克牌
System.out.println();
for(int?x=0;x<4;x++){
for(int?k=0+x*s2.length;k<(x+1)*s2.length;k++){
System.out.print(list.get(k)+"?");
}
System.out.println();
}
Collections.shuffle(list);??//使用Collections.shuffle()方法洗牌,打亂順序
//創(chuàng)建兩個參與者
Player??player1=new?Player();
Player??player2=new?Player();
//使用try?catch捕捉異常,要求輸入的必須是int格式
System.out.println();
System.out.println("請輸入第一位player的ID和名字:");
while(true){
try?{
System.out.print("ID:");
Scanner?sc=new?Scanner(System.in);
player1.setID(sc.nextInt());
break;
}?catch?(InputMismatchException?e)?{
System.out.println("請輸入正確的格式!");
continue;
}
}
while(true){
try?{
System.out.print("姓名:");
Scanner?sc=new?Scanner(System.in);
player1.setName(sc.next());
break;
}?catch?(InputMismatchException?e)?{
System.out.println("請輸入正確的格式!");
continue;
}
}
System.out.println("請輸出第二位player的ID和名字:");
while(true){
try?{
System.out.println("ID:");
Scanner?sc=new?Scanner(System.in);
player2.setID(sc.nextInt());
break;
}?catch?(InputMismatchException?e)?{
System.out.println("請輸入正確的格式!");
continue;
}
}
while(true){
try?{
System.out.print("姓名:");
Scanner?sc=new?Scanner(System.in);
player2.setName(sc.next());
break;
}?catch?(InputMismatchException?e)?{
System.out.println("請輸入正確的格式!");
continue;
}
}
//輪流取牌
@SuppressWarnings("unused")
String?getp1=list.get(0);
LinkedList<String>?p1=new?LinkedList<String>();
LinkedList<String>?p2=new?LinkedList<String>();
p1.add(list.get(0));
p2.add(list.get(1));
p1.add(list.get(2));
p2.add(list.get(3));
//開牌
System.out.println();
System.out.println("第一位取牌:"+p1);
System.out.println("第二位取牌:"+p2);
//找到取牌的次序
int?index11=listA.indexOf(p1.get(0));
int?index12=listA.indexOf(p1.get(1));
int?index21=listA.indexOf(p2.get(0));
int?index22=listA.indexOf(p2.get(1));
// System.out.println();
// System.out.println("4張牌的次序分別是:"+index11+"?"+index12+"?"+index21+"?"+index22);
System.out.println();
int?max1=getMax(index11,?index12);??//挑出第一個人取牌的大者
// System.out.println("第一個人的大牌次序是:"+max1);
int?max2=getMax(index21,?index22);??//挑出第二個人取牌的大者
// System.out.println("第一個人的大牌次序是:"+max2);
int?maxLast=getMax(max1,max2);??//挑出兩人牌的大者
// System.out.println("兩個人的大牌次序是:"+maxLast);
//展示打印勝者
System.out.println();
System.out.print("所以勝者是:");
if(maxLast==max1){
System.out.println("第一個人");
}
if(maxLast==max2){
System.out.println("第二個人");
}
}??//main?end
public?static?int?getMax(int?a,int?b){??//比較兩個數(shù)的大小,返回較大者。
if(a>b){
return?a;
}else{
return?b;
}
}??//getMax?end
}??//class?end
//運行結(jié)果
[方塊2,?方塊3,?方塊4,?方塊5,?方塊6,?方塊7,?方塊8,?方塊9,?方塊10,?方塊J,?方塊Q,?方塊K,?方塊A,?梅花2,?梅花3,?梅花4,?梅花5,?梅花6,?梅花7,?梅花8,?梅花9,?梅花10,?梅花J,?梅花Q,?梅花K,?梅花A,?紅桃2,?紅桃3,?紅桃4,?紅桃5,?紅桃6,?紅桃7,?紅桃8,?紅桃9,?紅桃10,?紅桃J,?紅桃Q,?紅桃K,?紅桃A,?黑桃2,?黑桃3,?黑桃4,?黑桃5,?黑桃6,?黑桃7,?黑桃8,?黑桃9,?黑桃10,?黑桃J,?黑桃Q,?黑桃K,?黑桃A]
從小到大排序[方塊2,?梅花2,?紅桃2,?黑桃2,?方塊3,?梅花3,?紅桃3,?黑桃3,?方塊4,?梅花4,?紅桃4,?黑桃4,?方塊5,?梅花5,?紅桃5,?黑桃5,?方塊6,?梅花6,?紅桃6,?黑桃6,?方塊7,?梅花7,?紅桃7,?黑桃7,?方塊8,?梅花8,?紅桃8,?黑桃8,?方塊9,?梅花9,?紅桃9,?黑桃9,?方塊10,?梅花10,?紅桃10,?黑桃10,?方塊J,?梅花J,?紅桃J,?黑桃J,?方塊Q,?梅花Q,?紅桃Q,?黑桃Q,?方塊K,?梅花K,?紅桃K,?黑桃K,?方塊A,?梅花A,?紅桃A,?黑桃A]
方塊2?方塊3?方塊4?方塊5?方塊6?方塊7?方塊8?方塊9?方塊10?方塊J?方塊Q?方塊K?方塊A?
梅花2?梅花3?梅花4?梅花5?梅花6?梅花7?梅花8?梅花9?梅花10?梅花J?梅花Q?梅花K?梅花A?
紅桃2?紅桃3?紅桃4?紅桃5?紅桃6?紅桃7?紅桃8?紅桃9?紅桃10?紅桃J?紅桃Q?紅桃K?紅桃A?
黑桃2?黑桃3?黑桃4?黑桃5?黑桃6?黑桃7?黑桃8?黑桃9?黑桃10?黑桃J?黑桃Q?黑桃K?黑桃A?
請輸入第一位player的ID和名字:
ID:1
姓名:Jack
請輸出第二位player的ID和名字:
ID:
2
姓名:John
第一位取牌:[方塊J,?方塊Q]
第二位取牌:[黑桃A,?紅桃8]
所以勝者是:第二個人
2016-07-05
我覺得你要是對撲克牌進行排序的話,可以應(yīng)用COLLECTIONS.SORT()方法
我的程序的參考,可以參考下:
?public void testSort(){??
??System.out.println("-------------開始洗牌--------------");
??List<Apoker> apokerList=new ArrayList<Apoker>();
??apokerList.addAll( Arrays.asList(pokers));?
??Collections.sort(apokerList,new PokeComparator());
??System.out.print("打亂順序后的撲克牌為:[");
??for(Apoker poker:apokerList){???????????? //思考這里為何要用Object呢?因為元素取出的時候它會被認為是類
?????
???System.out.print(poker.huase + poker.dianshu+",");?
???????? }
??System.out.println("]");
2016-06-28
Scanner sc=new Scanner(System.in);在循環(huán)體里面就不會死循環(huán),在外面就死循環(huán)。
2016-06-28
你的主程序中 ?try catch上一行循環(huán)條件為什么不是判斷式而是true呢?是為了創(chuàng)建一個死循環(huán)么?
可以試試for(int i=0;i=2;){
if(判斷式){
i=0
}else{
i=2
}
}