主要为了练习List,Map的用法,以及异常处理的应用
Poker类
public class Poker implements Comparable<Poker> { public String desgin; public String num; Poker(String desgin,String num){ this.desgin=desgin; this.num=num; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((desgin == null) ? 0 : desgin.hashCode()); result = prime * result + ((num == null) ? 0 : num.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof Poker)) return false; Poker other = (Poker) obj; if (desgin == null) { if (other.desgin != null) return false; } else if (!desgin.equals(other.desgin)) return false; if (num == null) { if (other.num != null) return false; } else if (!num.equals(other.num)) return false; return true; } @Override //比较扑克大小(comparTo其实就是在不断调用equals) public int compareTo(Poker o) { // TODO Auto-generated method stub if(this.num==o.num){ return this.desgin.compareTo(o.desgin); } else{ return this.num.compareTo(o.num); } } }
Player类
import java.util.ArrayList; import java.util.List; public class Player { public int id; public String name; public List<Poker> pokerList; Player(int id,String name){ this.id=id; this.name= name; pokerList = new ArrayList<Poker>(); } Player(){}; @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + id; result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + ((pokerList == null) ? 0 : pokerList.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof Player)) return false; Player other = (Player) obj; if (id != other.id) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; if (pokerList == null) { if (other.pokerList != null) return false; } else if (!pokerList.equals(other.pokerList)) return false; return true; } }
TestGame类
import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Scanner; public class TestGame { public List<Poker> poker;//存放扑克牌 public List<Player> player;//存放玩家信息 Scanner Console; TestGame(){ poker = new ArrayList<Poker>(); player = new ArrayList<Player>(); Console = new Scanner(System.in); } void CreatePoker(){ System.out.println("-------------创建卡牌-------------"); String desgin[]={"红桃","方片","黑桃","梅花"}; String num[]={"2","3","4","5","6","7","8","9","10","J","Q","K","A"}; for(int i=0;i<desgin.length;i++) for(int j=0;j<num.length;j++){ Poker p = new Poker(desgin[i],num[j]); poker.add(p); } Foreach(); System.out.println("-------------开始洗牌-------------"); Collections.shuffle(poker); Foreach(); System.out.println("-------------洗牌结束-------------"); } void CreatePlayer(){ System.out.println("-------------创建玩家-------------"); int i=0; while(i<2){ System.out.println("请输入ID:"); Integer id; //id必须是整数,异常检测 try{ id = scanInt(); }catch(Exception e){ System.out.println(e.getMessage()); continue; } int flag=0; while(flag==0){ int j; for(j=0;j<player.size();j++){ if(player.get(j).id==id){ System.out.println("该id已存在,请重新输入:"); try{ id = scanInt(); }catch(Exception e){ System.out.println(e.getMessage()); } } } if(j==player.size()){ flag=1; } } System.out.println("请输入玩家姓名"); String name = Console.next(); player.add(new Player(id,name)); i++; } System.out.println("------------创建玩家成功------------"); } int scanInt() throws Exception{ try{ int id = Console.nextInt(); return id; }catch(Exception e){ Console = new Scanner(System.in); throw new Exception("id需要为整数,请重新输入:"); } } void StartGame(){ System.out.println("欢迎玩家"+player.get(0).name); System.out.println("欢迎玩家"+player.get(1).name); System.out.println("-------------开始发牌-------------"); System.out.println("给"+player.get(0).name+"发牌"); player.get(0).pokerList.add(poker.get(0)); player.get(0).pokerList.add(poker.get(1)); System.out.println("给"+player.get(1).name+"发牌"); player.get(1).pokerList.add(poker.get(2)); player.get(1).pokerList.add(poker.get(3)); System.out.println("-------------发牌结束-------------"); Poker maxOfPlayer [] = new Poker [2]; for(int i=0;i<2;i++){ if(player.get(i).pokerList.get(0).compareTo(player.get(i).pokerList.get(1))>0){ System.out.println("玩家"+player.get(i).name+"的手牌为:["+player.get(i).pokerList.get(0).desgin+player.get(i).pokerList.get(0).num+"]和" + "["+player.get(i).pokerList.get(1).desgin+player.get(i).pokerList.get(1).num+"] " + "最大的为:["+player.get(i).pokerList.get(0).desgin+player.get(i).pokerList.get(0).num+"]"); maxOfPlayer[i]=player.get(i).pokerList.get(0); } else{ System.out.println("玩家"+player.get(i).name+"的手牌为:["+player.get(i).pokerList.get(0).desgin+player.get(i).pokerList.get(0).num+"]和" + "["+player.get(i).pokerList.get(1).desgin+player.get(i).pokerList.get(1).num+"] " + "最大的为:["+player.get(i).pokerList.get(1).desgin+player.get(i).pokerList.get(1).num+"]"); maxOfPlayer[i]=player.get(i).pokerList.get(1); } } if(maxOfPlayer[0].compareTo(maxOfPlayer[1])>0){ System.out.println("--------------玩家"+player.get(0).name+"获胜--------------"); }else{ System.out.println("--------------玩家"+player.get(1).name+"获胜--------------"); } } void Foreach(){ for(Poker p:poker){ System.out.print("["+p.desgin+p.num+"]"); } System.out.println(""); } public static void main(String[] args) { // TODO Auto-generated method stub TestGame t = new TestGame(); t.CreatePoker(); t.CreatePlayer(); t.StartGame(); } }运行结果: