幫忙看下調(diào)用其它類(lèi)中的list方法為什么不成功
主函數(shù)
public class Main {
?public static void main(String[] args) {
??MakePuKe a1 = new MakePuKe();
??a1.createPuKe();
??a1.xiPai();
??PlayGame p1 =new PlayGame();
??p1.player1();
??p1.player2();
??//p1.faPai();
??p1.theEnd();
?}
}
user類(lèi)? 玩家類(lèi)
import java.util.Comparator;
public class User extends PuKe implements Comparator<User>{
?private int ID;
?private String name;
?User(int ID,String name,String style, String number) {
??super(style, number);
??this.ID=ID;
??this.name=name;
?}
?public User() {}
?public int getID(){
??return ID;
?}
?public String name(){
??return name;
?}
?@Override
?public int compare(User o1, User o2) {
???return o1.getNumber().compareTo(o2.getNumber());
?}
}
MakePuKe類(lèi)
import java.util.*;
public class MakePuKe {
?public List<PuKe> container;
?public Set<PuKe> shuffleContainer;
?{
??container = new ArrayList<PuKe>();
??shuffleContainer = new HashSet<PuKe>();
?}
?public void createPuKe(){
??System.out.println("********正在組建撲克********");
??String[] pukeStyle = {"黑桃","紅桃","梅花","方片"};
??String[] pukeNumber = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
??for(String i:pukeStyle){
???for(String j:pukeNumber){
????PuKe a = new PuKe(i,j);
????container.add(a);
???}
??}?
??System.out.println("********撲克組建完成********");
??for(PuKe i:container){
???System.out.print(i.getStyle()+i.getNumber()+",");
??}
??System.out.println();
?}
?public void xiPai(){
??System.out.println("**********開(kāi)始洗牌**********");
??for(int i = 0 ;i<container.size();i++){
???PuKe a = container.get(i);
???shuffleContainer.add(a);
???container.remove(i);
??}
??for(PuKe i : shuffleContainer){
???PuKe a = new PuKe(i.getStyle(),i.getNumber());
???container.add(a);
??}
??System.out.println("**********洗牌結(jié)束**********");
?}
}
最后一個(gè)實(shí)現(xiàn)比較手牌大小的類(lèi)
import java.util.*;
public class PlayGame {
?public List<User> userList;
?{
??userList = new ArrayList<User>();
?}
?Scanner in = new Scanner(System.in);
?int newID1;
?String newName1;
?int newID2;
?String newName2;
?MakePuKe mpk = new MakePuKe();
?public void player1(){
??System.out.print("請(qǐng)輸入玩家一ID:");
??try{
???newID1 = in.nextInt();
??}
??catch(Exception e){
???System.out.print("int類(lèi)型ID");
???player1();
??}
??System.out.print("請(qǐng)輸入玩家一姓名:");
??newName1 = in.next();
?}
?public void player2(){
??try{
???while(true){
????System.out.print("請(qǐng)輸入玩家二ID:");
????newID2 = in.nextInt();
????if(newID2!=newID1){
?????break;
????}
????else{
?????System.out.print("姓名重復(fù)!");
????}
???}
??}
??catch(Exception e){
???System.out.print("int類(lèi)型ID");
???player1();
??}
??System.out.print("請(qǐng)輸入玩家二姓名:");
??newName2 = in.next();
?}
?public void faPai(){
??System.out.println("**********開(kāi)始發(fā)牌**********");
??for(int i=0;i<4;i++){
???//PuKe a1 = mpk.container.get(i);
???User u1 = new User(newID1,newName1,mpk.container.get(i).getStyle(),mpk.container.get(i).getNumber());
???userList.add(u1);
???i++;
???PuKe a2 = mpk.container.get(i);
???User u2 = new User(newID2,newName2,a2.getStyle(),a2.getNumber());
???userList.add(u2);
??}
?}
?public void theEnd(){
??Collections.sort(userList, new User());
??String a1 = userList.get(0).getNumber();
??String a2 = userList.get(1).getNumber();
??int i = 0;
??int j = 0;
??if(a1.equals(a2)){
???switch(userList.get(0).getStyle()){
???case "黑桃":
????i=4;break;
???case "紅桃":
????i=3;break;
???case "梅花":
????i=2;break;
???case "方片":
????i=1;break;
???}
???switch(userList.get(1).getStyle()){
???case "黑桃":
????j=4;break;
???case "紅桃":
????j=3;break;
???case "梅花":
????j=2;break;
???case "方片":
????j=1;break;
???}
???if(i>j){
????System.out.println(userList.get(0).name()+"獲勝");
???}
???else{
????System.out.println(userList.get(1).name()+"獲勝");
???}
??}
??else{
???System.out.println(userList.get(0).name()+"獲勝");
??}
?}
}
思路大致是
用List類(lèi)型的集合container存放撲克
通過(guò)Set類(lèi)型的集合shuffleContainer洗牌,并把洗牌的結(jié)果保存回container中(這兩個(gè)集合在同一類(lèi)下)
再建立一個(gè)List類(lèi)型的集合userList,存放玩家id,name,手牌。然后排序,比較輸出結(jié)果
程序還沒(méi)寫(xiě)全,思路肯定不是很好。。。但是只能想到這么多了,執(zhí)行會(huì)報(bào)錯(cuò),求大神幫忙調(diào)試一下。若有其他好的思路,指點(diǎn)一二也是極好的。
2016-02-29
有感嘆號(hào) 的是修改的地方//!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Main類(lèi)中:
public class Start {
public static void main(String[] args) {
// TODO Auto-generated method stub
MakePuKe a1 = new MakePuKe();
?a1.createPuKe();
?a1.xiPai();
?PlayGame p1 =new PlayGame();
?p1.player1();
?p1.player2();
?p1.faPai(a1);//!!!!!!!!!!!!!!!!!!!!!!!!
?p1.theEnd();
}
}
PlayGame類(lèi)中:
?public void faPai(MakePuKe A){ ? ? ? ? ? ? ? ? ? ?//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
?System.out.println("**********開(kāi)始發(fā)牌**********");
?for(int i=0;i<4;i++){
?
? User u1 = new User(newID1,newName1,A.container.get(i).getStyle(),A.container.get(i).getNumber());//!!!!!!!!!!!!!!!!!!!!!!!!!
? userList.add(u1);
? i++;
?
? User u2 = new User(newID2,newName2,A.container.get(i).getStyle(),A.container.get(i).getNumber());//!!!!!!!!!!!!!!!!!!!!!!!!!!!
? userList.add(u2);
?}
}
public void theEnd(){
?Collections.sort(userList, new User());
?String a1 = userList.get(3).getNumber(); ? ? //!!!!!!!!!!!!!!!!!!!!!!!!!!!!
?String a2 = userList.get(2).getNumber(); ? ?//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
?int i = 0;
?int j = 0;
?System.out.println("最后的牌為:");
?for(User U : userList) ? ? ? ? ? ? ? ? ? //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11
?{
?System.out.println("玩家ID:"+U.getID()+" ?牌為: "+ U.getNumber()+" "+U.getStyle() );
?}
?if(a1.equals(a2)){
? switch(userList.get(3).getStyle()){ ?//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
? case "黑桃":
? ?i=4;break;
? case "紅桃":
? ?i=3;break;
? case "梅花":
? ?i=2;break;
? case "方片":
? ?i=1;break;
? }
? switch(userList.get(2).getStyle()){ ? ? ? ?//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!111111
? case "黑桃":
? ?j=4;break;
? case "紅桃":
? ?j=3;break;
? case "梅花":
? ?j=2;break;
? case "方片":
? ?j=1;break;
? }
? if(i>j){
? ?System.out.println("玩家ID:"+userList.get(3).getID()+"獲勝"); ? ? ? ?//!!!!!!!!!!!!!!!!!!
? }
? else{
? ?System.out.println("玩家ID:" + userList.get(2).getID()+"獲勝"); ? ? ? ?//!!!!!!!!!!!!!!!!!!!!!!!!!!!
? }
?}
?else{
? System.out.println("玩家ID:"+ userList.get(3).getID()+"獲勝"); ? //!!!!!!!!!!!!!!!!!!!!!!!!!!!1111
?}
}