新手提問Exception in thread "main" java.util.NoSuchElementException at java.util.ArrayList$Itr.next(Unknown Source) at java.util.Collections.max(Unknown Source)
// 創(chuàng)建一副牌
public class Poker {
private String num;//點數(shù)
private String flower;//花色
private String poker;//一張牌
public Poker(String pnum,String pflower){
this.num=pnum;
this.flower=pflower;
this.poker=num+flower;
}
// 用字符的比較規(guī)則,10比2,3,4...要小
public String getnum(){
if(num=="10"){
num="91";
}
else if(num=="J"){
num="92";
}
else if(num=="Q"){
num="93";
}
else if(num=="K"){
num="94";
}
else if(num=="A"){
num="1";
}
return this.num;
}
public String getFlower() {
return flower;
}
@Override
public String toString() {
return poker;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((flower == null) ? 0 : flower.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 (flower == null) {
if (other.flower != null)
return false;
} else if (!flower.equals(other.flower))
return false;
if (num == null) {
if (other.num != null)
return false;
} else if (!num.equals(other.num))
return false;
return true;
}
}
import java.util.ArrayList;
import java.util.List;
public class Player{
private int id;
private String name;
private List<Poker>pokercard;
// 無參構(gòu)造
public Player(){
}
// 初始化玩家,手牌
public Player(int id,String name){
this.id = id;
this.name = name;
this.pokercard = new ArrayList<Poker>();
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Poker> getPokercard() {
return this.pokercard;
}
public void setPokercard(Poker poker) {
this.pokercard.add(poker);
}
@Override
public String toString() {
return "Player [name=" + name + "]";
}
}
import java.util.Comparator;
public class PokerComparator implements Comparator<Poker> {
public int compare(Poker o1, Poker o2) {
String num1=(String)o1.getnum();
String num2=(String)o2.getnum();
int c=0;
if((c=num1.compareTo(num2))==0){
String flower1=(String )o1.getFlower();
String flower2=(String )o2.getFlower();
c=flower1.compareTo(flower2);
}
return c;
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
public class PlayGame {
private String[] flower = { "方塊", "梅花", "紅心", "黑桃" };
private String[] num = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"J", "Q", "K" };
// 牌集合
private List<Poker> pokers;
// 玩家集合
private List<Player> players;
// 大牌集合
private List<Poker> maxcards;
private Scanner scanner;
// 初始化牌、
public PlayGame() {
pokers = new ArrayList<Poker>();
players = new ArrayList<Player>();
maxcards = new ArrayList<Poker>();
System.out.println("創(chuàng)建撲克牌");
for (int i = 0; i < flower.length; i++) {
for (int j = 0; j < num.length; j++) {
Poker poker = new Poker(flower[i], num[j]);
this.pokers.add(poker);
}
}
System.out.println("創(chuàng)建成功" + pokers);
}
// 初始化玩家
public void CreatePlayers() {
scanner = new Scanner(System.in);
this.WashCard();
for (int i = 0; i < 2; i++) {
System.out.println("請輸入第" + (i + 1) + "位玩家ID");
int id = 0;
try {
id = scanner.nextInt();
System.out.println("請輸入第" + (i + 1) + "位玩家姓名");
} catch (Exception o) {
System.out.println("請輸入整數(shù)型ID");
this.CreatePlayers();
}
String name = scanner.next();
players.add(new Player(id, name));
}
for (int i = 0; i < players.size(); i++) {
? ? ? ? ? ? System.out.println("----歡迎玩家:"+players.get(i));
}
}// 洗牌
public void WashCard() {
System.out.println("開始洗牌");
for (int i = 0; i < pokers.size(); i++) {
Random random = new Random();
int j = random.nextInt(pokers.size());
Poker temp = pokers.get(i);
pokers.set(i, pokers.get(j));
pokers.set(j, temp);
}
System.out.println("洗牌結(jié)束");
}
// 拿牌
public void TakeCard() {
for (int i = 0, n = 0; i < 2; i++) {
// 每人依次拿牌
for (int j = 0; j < players.size(); j++, n++) {
this.players.get(j).setPokercard(this.pokers.get(n));
System.out.println("玩家" + players.get(j) + "拿牌");
}
}
System.out.println("結(jié)束發(fā)牌");
}
// 比較大小
public void playGame(){
? ? System.out.println("開始游戲");
? ?
? ? ? for (int i = 0; i < players.size(); i++) {
? ? ? ? ? ? System.out.println("玩家:"+players.get(i)+"最大的手牌為:"+ Collections.max(this.players.get(i).getPokercard(),new PokerComparator()));
? ? ? ? ? ? maxcards.add(Collections.max(this.players.get(i).getPokercard(),new PokerComparator())); //添加各自的大牌到一個List
? ? ? ? ? }
? ? ? ??
}//比較大牌的List集合 決出 最大的一張撲克
public void playGame2(){
// ? ? 判斷大牌集合中最大牌
? ? Poker winPoker=Collections.max(maxcards, new PokerComparator());
? ? for(int i=0;i<players.size();i++){
? ? if(players.get(i).getPokercard().contains(winPoker)){
? ? System.out.println("勝出的玩家是:"+players.get(i));
? ? }
? ? }
? ? System.out.println("玩家各自的手牌是");
? ? for(int i=0;i<players.size();i++){
? ? System.out.println(players.get(i).getPokercard());
? ? }
? ? }
}
public class GaneTest {
public static void main(String[] args) {
PlayGame pg=new PlayGame();
pg.CreatePlayers();
pg.playGame();
pg.playGame2();
}
}
------------------------------------------------------------------------------------------------------------
創(chuàng)建撲克牌
創(chuàng)建成功[方塊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]
開始洗牌
洗牌結(jié)束
請輸入第1位玩家ID
1
請輸入第1位玩家姓名
s
請輸入第2位玩家ID
2
請輸入第2位玩家姓名
f
----歡迎玩家:Player [name=s]
----歡迎玩家:Player [name=f]
開始游戲
Exception in thread "main" java.util.NoSuchElementException
at java.util.ArrayList$Itr.next(Unknown Source)
at java.util.Collections.max(Unknown Source)
at PlayGame.playGame(PlayGame.java:88)//上面黑體部分
at GaneTest.main(GaneTest.java:8)
-----------------------------------------------------------
求解救啊
2016-02-21
takecard方法都沒有調(diào)用,怎么可能不報錯