亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

求大神解答個問題,在寫的過程中我遇了這個問題 讓我十分不解 ,就是player player=new player();的問題!

在這類playingCcards下創建player一點問題沒有

package?com_poker_game;

import?java.util.*;

public?class?playingCcards?{
	player?player=new?player();//==============在這沒問題========================
	List<Cards>??cardsList=new?ArrayList<Cards>();
	List<player>?playerList=new?ArrayList<player>();
	String[]?huaSe={"黑桃","方片","草花","紅桃"};
	String[]?daXiao={"2","3","4","5","6","7","8","9",
			?"10","J","Q","K","A"};
	

但是放在playingCcards 類中的方法sendPokers和compare中,運行就會提示報錯

(Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1),而且compare中的

int size=player.playerOneCards.size();
System.out.println("lalal"+size);,size死活就是0。這是怎么回事呢??

package?com_poker_game;

import?java.util.*;

public?class?playingCcards?{
	//player?player=new?player();=============不放這里了,這沒了==============
	List<Cards>??cardsList=new?ArrayList<Cards>();
	List<player>?playerList=new?ArrayList<player>();
	String[]?huaSe={"黑桃","方片","草花","紅桃"};
	String[]?daXiao={"2","3","4","5","6","7","8","9",
			?"10","J","Q","K","A"};
	?
//	public?void?createCards(){
//		?for(int?i=0;i<huaSe.length;i++){
//			?for(int?j=0;i<daXiao.length;j++){
//				?cardsList.add(new?Cards(huaSe[i],daXiao[j]));				?
//				//cardsSet輸出所有撲克牌
//				?System.out.print(huaSe[i]+daXiao[j]+"?");
//			?}
//			?
//		?}
//		?
//	?}

	
	//建立撲克
	public?void?createCards()?{
		System.out.println("----------------創建撲克牌----------------");
		for(int?i?=?0;i?<?huaSe.length;i++){
			?for(int?j?=?0;j?<?daXiao.length;j++){
				?cardsList.add(new?Cards(huaSe[i],daXiao[j]));				?
				?System.out.print(huaSe[i]+daXiao[j]+"?");
			?}
			?
		?}
	????????System.out.println("\n"+"-------------撲克牌創建成功!--------------");
	????????/***
	?????????*?另外一種輸出方法?就不用了
	?????????*/
//????????for?(Cards?card?:?cardsList)?{
//???????????System.out.print(card.getType()?+?card.getNum()?+?",");
//????????}
????????
????????System.out.println("總共有"?+?cardsList.size()?+?"張牌。");
????????
????????//------------------------------洗牌
????????Collections.shuffle(cardsList);
????????System.out.println("--------------洗牌完成--------------");
????}
	
	
	//建立玩家
	public?void?creatPlayer(){
		int?playerID=0;
		String?playerName;
		Scanner?sc=new?Scanner(System.in);
			for(int?k=1;k<=2;k++){
				System.out.println("請輸入第"+k+"位玩家ID:");
				
				//while(true)?想要在catch后面繼續寫代碼?while(true)才好使
				while(true){
					try{
						sc=new?Scanner(System.in);
						playerID=sc.nextInt();
						break;
					}catch(Exception?e){
						System.out.println("必須為整數");
						continue;				
					}	
							}
					System.out.println("請輸入第"+k+"位玩家姓名:");
					playerName=sc.next();
					playerList.add(new?player(playerID,playerName));
					
		}
			//遍歷playerlist查看此時系統中有哪些玩家
			for(int?p=0;p<playerList.size();p++){
			System.out.println("目前存在的玩家有:"+playerList.get(p).id+
					"??"+playerList.get(p).name);	
			}
	}
	
	
	//發牌
	public?void?sendPokers(){		
		player?player=new?player();//===============放這里=================
		int?n=0;
		
		for(int?u=0;u<4;u++){			
			//哈哈很喜歡這個方法?u==0+(2*n),再多人也不怕!?。。?!
			if(u==0+(2*n)){
				player.playerOneCards.add(cardsList.get(u));
			}
			if(u==1+(2*n)){
				player.playerSecondCards.add(cardsList.get(u));
				//n++的位置很重要的啊?。。。。。。。。。。。。。。?!
				n++;
			}
			
		}
//		for(int?p=0;p<player.playerCards.size();p++){
//			System.out.println("目前已經發出的牌有:"+player.playerCards.get(p));	
//			}
		for(Cards?pcr1:player.playerOneCards){
			System.out.println("玩家"+playerList.get(0).name+"的牌有:"
		+pcr1.type+pcr1.num);
		}
			for(Cards?pcr2:player.playerSecondCards){
				System.out.println("玩家"+playerList.get(1).name+"的牌有:"
			+pcr2.type+pcr2.num);
		}
			
	}
	
	//比較兩人手牌大小
	public?void?compare(){
		player?player=new?player();//===========在這也new一下=================
		List<Cards>?everyoneMaxPokeList=new?ArrayList<Cards>();
		Collections.sort(player.playerOneCards);
		Collections.sort(player.playerSecondCards);
		//crd.compareTo(per1.playerOneCards,per1.playerSecondCards);
		
		//獲取手牌list的size
		int?size=player.playerOneCards.size();
		//System.out.println("lalal"+size);
		
		//獲得每個人最大的手牌
		System.out.println("玩家"+playerList.get(0).name+"的最大牌:"+player.playerOneCards.get(size-1).type+
				player.playerOneCards.get(size-1).num);
		System.out.println("玩家"+playerList.get(1).name+"的最大牌:"+player.playerSecondCards.get(size-1).type+
				player.playerSecondCards.get(size-1).num);
		
		//把每個人最大手牌放入everyoneMaxPokeList中再做比較
		everyoneMaxPokeList.add(player.playerOneCards.get(size-1));
		everyoneMaxPokeList.add(player.playerSecondCards.get(size-1));
		Collections.sort(everyoneMaxPokeList);
		
		int?sze=everyoneMaxPokeList.size();

		//看看everyoneMaxPokeList中最大的數據到底屬于誰!
		
		//下面這種寫法equal方法有問題??待研究
//			if(everyoneMaxPokeList.get(sze-1).equals(player.playerOneCards)){
//				System.out.println("Winner?is:"+playerList.get(0).name);
//			}else{
//				System.out.println("Winner?is:"+playerList.get(1).name);
//			}
		if(player.playerOneCards.contains(everyoneMaxPokeList.get(sze-1))){
			System.out.println("Winner?is:"+playerList.get(0).name);
		}else{
			System.out.println("Winner?is:"+playerList.get(1).name);
		}	
	}
	?	/**
	?*?@param?args
	?*/
	public?static?void?main(String[]?args)?{
		//?TODO?Auto-generated?method?stub
		playingCcards?pc=new?playingCcards();		
		pc.createCards();
		pc.creatPlayer();
		pc.sendPokers();
		pc.compare();
	}

}

求大神解答 ?我好折磨死了

正在回答

1 回答

第一個問題數組越界是因為playerList.get(0)報錯,你并沒有給playerList添加值????

第二個問題因為player沒有編輯值所以player.playerOneCards.size()的值為初期值0

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

求大神解答個問題,在寫的過程中我遇了這個問題 讓我十分不解 ,就是player player=new player();的問題!

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號