撲克牌作業(yè) 我不知道哪里出問(wèn)題了 大家能看看嗎
package pkpxm;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
//1·創(chuàng)建一副撲克牌(包括各種花色)
//2·創(chuàng)建倆名玩家(id、name、手牌(手牌為撲克牌的集合))
//3.洗牌(將撲克牌)
//4·發(fā)牌(將洗牌之后的撲克牌集合,從第一張開(kāi)始發(fā)給倆名玩家,按照一人一張的方式,每人發(fā)倆張)
//5.游戲(取手中最大的進(jìn)行比較,大的贏,相等比較花色)
//創(chuàng)建一個(gè)撲克牌游戲的類
public class GamePoker {
//創(chuàng)建撲克牌、人物集合
List<Poker> pokerList;
List<Player> playerList;
//玩家
Player player1;
Player player2;
String []pokerType = {"紅桃","黑桃","方片","梅花"};
String []pokerNum? = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"} ;
public GamePoker(){
pokerList = new ArrayList<Poker>();
playerList =new ArrayList<Player>();
}
//創(chuàng)建撲克牌
public void creatPoker(){
System.out.println("--------創(chuàng)建撲克牌...---------");
System.out.println("--------創(chuàng)建撲克牌成功!--------");
System.out.print("為:");
for (int i = 0; i < pokerType.length; i++) {
for (int j = 0; j < pokerNum.length; j++) {
System.out.print(pokerType[i] + pokerNum[j]);
pokerList.add(new Poker(pokerType[j],pokerNum[i]));
}
}
}
//洗牌
public void washPoker(){
System.out.println("開(kāi)始洗牌");
Collections.shuffle(pokerList);? ? //進(jìn)行隨機(jī)打亂
System.out.println("洗牌結(jié)束");
}
//創(chuàng)建玩家
public void createPlayer(){
System.out.println("---------創(chuàng)建玩家---------");
Scanner console =new Scanner(System.in);
System.out.println("請(qǐng)輸入第一位玩家ID:");
System.out.print("ID為:");
String id = console.next();
System.out.println("請(qǐng)輸入第一位玩家姓名:");
System.out.println("姓名為:");
String name = console.next();
Player player1 = new Player(id, name);
playerList.add(player1);
System.out.println("---------創(chuàng)建玩家---------");
System.out.println("請(qǐng)輸入第二位玩家ID:");
System.out.print("ID為:");
String id2 = console.next();
System.out.println("請(qǐng)輸入第二位玩家姓名:");
System.out.println("姓名為:");
String name2 = console.next();
Player player2 = new Player(id2, name2);
playerList.add(player2);
System.out.println("歡迎玩家:" + player1.getName());??
System.out.println("歡迎玩家:" + name2);
}
//發(fā)牌
public void sendPoker(){
System.out.println("-------開(kāi)始發(fā)牌--------");
System.out.println("玩家" + player1.getName() + "拿牌");
player1.handPokerList.add(pokerList.get(0));
System.out.println("玩家" + player2.getName() + "拿牌");
player2.handPokerList.add(pokerList.get(1));
System.out.println("玩家" + player1.getName() + "拿牌");
player1.handPokerList.add(pokerList.get(2));
System.out.println("玩家" + player2.getName() + "拿牌");
player2.handPokerList.add(pokerList.get(3));
System.out.println("------發(fā)牌結(jié)束------");
}
//游戲
public void createGame(){
System.out.println("---------開(kāi)始游戲----------");
Collections.sort(player1.handPokerList);
Collections.sort(player2.handPokerList);?
Poker playerMax1= player1.handPokerList.get(1);
Poker playerMax2 = player2.handPokerList.get(1);
if (playerMax1.getRank() > playerMax2.getRank()) {
System.out.println(player1.getName() + "最大的手牌為:" + playerMax1);
}
else if (playerMax1.getRank() > playerMax2.getRank()) {
System.out.println(player2.getName() + "最大的手牌為:" + playerMax2);
}
else {
System.out.println("平局");
}
System.out.println("玩家各自的手牌為:");
player1.printPlayerPoker();
player2.printPlayerPoker();
}
public static void main(String[] args){
GamePoker gp = new GamePoker();
gp.creatPoker();
gp.washPoker();
gp.createPlayer();
gp.sendPoker();
gp.createGame();
}
}
package pkpxm;
//撲克類
public class Poker implements Comparable<Poker>{
public String Type;? ? ? ? //撲克數(shù)字
public String Num;? ? ? ?//撲克類型
private int Rank;? ? ? ? ?//越大等級(jí)越高
public Poker(String Type,String Num){
this.Type = Type;
this.Num = Num;
}
public int getRank(){
return Rank;
}
public int compareTo(Poker arg0) {
// TODO Auto-generated method stub
return this.Num.compareTo(Num);
}
}
package pkpxm;
import java.util.ArrayList;
import java.util.List;
//玩家類
public class Player {
private String id;
private String name;
List<Poker> handPokerList;? ? ?//存放手牌
public Player(String id,String name){
this.id = id;
this.id = name;
handPokerList = new ArrayList<Poker>();
}
public String getID(){
return id;
}
public String getName() {
// TODO Auto-generated method stub
return name;
}
//玩家最后的手牌
public void printPlayerPoker(){
for (Poker poker:handPokerList) {
System.out.print(name);
System.out.println(poker.Type + poker.Num);
}
}
}
運(yùn)行之后就這樣了:
--------創(chuàng)建撲克牌...---------
--------創(chuàng)建撲克牌成功!--------
為:紅桃2紅桃3紅桃4紅桃5紅桃6Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at pkpxm.GamePoker.creatPoker(GamePoker.java:41)
at pkpxm.GamePoker.main(GamePoker.java:120)
2019-08-11
pokerList.add(new Poker(pokerType[j],pokerNum[i]));? ?// i,j 位置換下?
public Player(String id,String name){
this.id = id;
this.id = name;? ?//這里也不對(duì)
handPokerList = new ArrayList<Poker>();
}
createGame 方法 里的比較似乎不對(duì)