花了一晚上寫的7-1的作業
Card類 public?class?Card??implements?Comparable<Card>{ public?String?cardColor; private?String?key; private?String?value; public?String?cardNum; public?int?num; public?String?getCardColor()?{ return?cardColor; } public?void?setCardColor(String?cardColor)?{ this.cardColor?=?cardColor; } public?int?getNum()?{ return?num; } public?void?setNum(int?num)?{ this.num?=?num; } public?Card()?{ } public?Card(String?cardColor,String?cardNum,int?num)?{ this.cardColor?=cardColor; this.cardNum?=?cardNum; this.num?=?num; } public?String?getKey()?{ return?key; } public?void?setKey(String?key)?{ this.key?=?key; } public?String?getValue()?{ return?value; } public?void?setValue(String?value)?{ this.value?=?value; } public?String?getCardNum()?{ return?cardNum; } public?void?setCardNum(String?cardNum)?{ this.cardNum?=?cardNum; } @Override public?int?compareTo(Card?o)?{ //?TODO?Auto-generated?method?stub return?this.num-o.num; } } Player類 public?class?Player?{ public?String?ID; public?String?name; public?List<Card>?playerCards; public?Player(String?ID,?String?name)?{ this.ID?=?ID; this.name?=?name; this.playerCards?=?new?ArrayList<Card>(); } public?String?getID()?{ return?ID; } public?void?setID(String?iD)?{ ID?=?iD; } public?String?getName()?{ return?name; } public?void?setName(String?name)?{ this.name?=?name; } public?List<Card>?getPlayerCards()?{ return?playerCards; } public?void?setPlayerCards(List<Card>?playerCards)?{ this.playerCards?=?playerCards; } } CardGame類 import?java.util.*; 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?CardGame?{ public?List<Card>?cardList; public?List<Player>?playerList; private?Scanner?input; //Player?p1; //Player?p2; public?CardGame()?{ this.cardList?=?new?ArrayList<Card>(); this.playerList?=new?ArrayList<Player>(); this.input?=?new?Scanner(System.in); } /** *?第一、要創建一副不包括大小王的撲克牌 *?@param?args */ public?void?Cards()?{ //創建撲克牌 System.out.println("--------------創建撲克牌—-----------------"); //用兩個數組來存放撲克的花色和數值 String[]?CardColor?=?new?String[]?{"黑桃","梅花","紅桃","方塊"}; String[]?CardNum?=?new?String[]?{"2","3","4","5","6","7","8","9","10","J","Q","K","A"}; //利用for循環取出撲克的花色和數值并且存放到CardList中 for(int?i?=0;i<4;i++)?{ for(int?j=0;j<13;j++)?{ cardList.add(new?Card(CardColor[i],CardNum[j],j*10+i)); } } //遍歷打印撲克牌 System.out.println("--------------創建撲克牌成功—-----------------"); System.out.println("撲克牌為:"); for?(Card?card?:?cardList)?{ System.out.print(card.cardColor?+?card.cardNum?+","); } System.out.println("共有52張牌"); //利用四個for循環來獲取黑桃梅花紅桃方塊的對象,代碼繁瑣 //for(Integer?i=2;i<11;i++)?{ //Card?cd?=?new?Card("黑桃",i.toString()); //cardList.add(cd); //} //Card?cd1?=?new?Card("黑桃","A"); //cardList.add(cd1); //Card?cd2?=?new?Card("黑桃","J"); //cardList.add(cd2); //Card?cd3?=?new?Card("黑桃","Q"); //cardList.add(cd3); //Card?cd4?=?new?Card("黑桃","K"); //cardList.add(cd4); } /** *?利用collections.shuffle方法來打亂List中撲克牌順序 *?@param?args */ public?void?washCard()?{ System.out.println("--------------開始洗牌—-----------------"); Collections.shuffle(cardList); System.out.println("--------------結束洗牌—-----------------"); } /** *?創建玩家 *?@param?args */ public?void?players()?{ int?i=0; for(;i<2;i++)?{ try?{ System.out.println("請輸入第"?+?(i+1)?+"位玩家的ID:"); String?ID=?input.next(); //提示輸入玩家姓名 System.out.println("請輸入第"?+?(i+1)?+"位玩家的姓名:"); String?name?=input.next(); //創建新的玩家對象 Player?newPlayer?=?new?Player(ID,name); playerList.add(newPlayer); }catch(InputMismatchException?e)?{ System.out.println("請輸入正確的整數類型:"); } } } /** *?隨機發牌 *?@param?args */ public?void?launchCard()?{ //隨機給玩家發兩張牌 System.out.println("--------------開始發牌—-----------------"); Random?random?=?new?Random(); int?cardSize?=?cardList.size(); Card?card?=?new?Card(); for(int?i=0;i<2;i++)?{ for?(Player?player?:?playerList)?{ card?=cardList.get(random.nextInt(cardSize)); System.out.println("----玩家:"+?player.ID?+?":"?+?player.name?+"拿牌------"); player.playerCards.add(card); cardSize--; } } //p1.playerCards.add(cardList.get(0)); //System.out.println("----玩家:"+p1.name+"-拿牌------"); //p2.playerCards.add(cardList.get(1)); //System.out.println("----玩家:"+p2.name+"-拿牌------"); //p1.playerCards.add(cardList.get(2)); //System.out.println("----玩家:"+p1.name+"-拿牌------"); //p2.playerCards.add(cardList.get(3)); //System.out.println("----玩家:"+p2.name+"-拿牌------"); //Set<String>?keySet?=?playerList.keySet(); //int?i?=?0;? //int?j?=?0;? //while?(j?<?2)?{ //for?(String?id?:?keySet)?{? //playerList.get(id).getPlayerCards().add(cardList.get(i)); //System.out.println("----玩家:"?+?playerList.get(id).getName()?+?"-拿牌"); // //} //j++;? //} System.out.println("--------------發牌結束—-----------------"); } /** *?開始游戲 *?@param?args */ public?void?startGame()?{ System.out.println("--------------游戲開始—-----------------"); ArrayList<Card>?maxCard?=?new?ArrayList();//創建兩玩家最大牌的集合 for?(Player?player?:?playerList?)?{ //利用Collections.sort進行排序 Collections.sort(player.getPlayerCards()); System.out.println(player.getName()+"最大的牌為:"?+?player.getPlayerCards().get(1).cardColor? +player.getPlayerCards().get(1).cardNum); //輸出玩家各自的手牌 System.out.println(player.getName()+"的牌為:"?+?player.getPlayerCards().get(0).cardColor? +player.getPlayerCards().get(0).cardNum?+","?+?player.getPlayerCards().get(1).cardColor? +player.getPlayerCards().get(1).cardNum); //將最大的牌存儲 maxCard.add(player.getPlayerCards().get(1)); } //兩玩家最大的牌進行比較 Collections.sort(maxCard); for?(Player?player?:?playerList)?{ if(player.getPlayerCards().contains(maxCard.get(1)))?{ System.out.println("恭喜玩家"+player.getName()+"獲勝"); } } } public?static?void?main(String[]?args)?{ //?TODO?Auto-generated?method?stub CardGame?cg?=?new?CardGame(); cg.Cards(); cg.washCard(); cg.players(); cg.launchCard(); cg.startGame(); } }
創建玩家輸入Id和姓名,我寫了異常卻不執行,不知道是什么問題???還是我寫錯了???
2019-03-09
你并沒有在catch中寫出返回循環效果,那肯定不會返回呀。
在catch中做到循環效果就得在其使用try-catch語句外執行一次強制循環,因為continue返回效果只能用于循環體中,所以你可以測試在try-catch語句外面加 while(true){ ....}強制循環,然后再在catch中最后加入continue語句。
值得注意的是這樣做雖然可以起到返回作用,但是Scanner輸入的值并不會刷新,所以就會出現無限死循環。
所以應該在其continue語句前重新刷新Scanner值,也就是加入console=new Scanner(System.in);