第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

撲克牌游戲關(guān)于玩家獲得手牌出現(xiàn)空指針異常

代碼我放到下面去了

為什么執(zhí)行到p1.cards.add(c1);就空指針異常了?

謝謝,求解答

正在回答

6 回答

理論上邏輯也沒(méi)啥錯(cuò),你看看是不是eclipse抽風(fēng)了,這樣應(yīng)該是可以的,邏輯上是沒(méi)啥問(wèn)題,或者你用dubug調(diào)試一下,如果實(shí)在不行,再回復(fù)我吧,可以一起找錯(cuò)誤


0 回復(fù) 有任何疑惑可以回復(fù)我~

package?com.poker;

?

import?java.util.HashSet;

import?java.util.Set;

?

public?class?Player?{

??

?public?String?name;

?public?int?id;

?public?Set<Card>?cards;

??

?public??Player(int?id,String?name){

??this.id=id;

??this.name=name;

??this.cards?=?new?HashSet<Card>();

?}

?public?Player(){

???

?}

}

set集合是沒(méi)有g(shù)et方法的,你放進(jìn)去是取不到值得,所以一直都是null

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

K_Muxs 提問(wèn)者

不是的,我找到錯(cuò)誤了 是我創(chuàng)建玩家對(duì)象的時(shí)候調(diào)用了無(wú)餐的構(gòu)造函數(shù),而我玩家類(lèi)里面的無(wú)參的構(gòu)造函數(shù)沒(méi)有初始化這個(gè)Set
2016-09-30 回復(fù) 有任何疑惑可以回復(fù)我~
#2

qq_倔強(qiáng)人生_0 回復(fù) K_Muxs 提問(wèn)者

public Player(){ this.cards = new HashSet<Card>(); } 少了這個(gè),我自己也沒(méi)有注意,好久沒(méi)用了。。
2016-09-30 回復(fù) 有任何疑惑可以回復(fù)我~
#3

K_Muxs 提問(wèn)者 回復(fù) qq_倔強(qiáng)人生_0

嗯,我檢查到就加上去了,不報(bào)異常了。 順便問(wèn)句題外話,為什么看自己寫(xiě)的代碼就看得很流暢,看別人寫(xiě)的就常常挺吃力的呢?
2016-09-30 回復(fù) 有任何疑惑可以回復(fù)我~
#4

qq_什么亡魂溺海沒(méi)有跳海實(shí)在_03283094 回復(fù) K_Muxs 提問(wèn)者

因?yàn)槟愕拇a是按照你自己的思維寫(xiě)的 你讀的時(shí)候感覺(jué)順理成章 你讀別人的代碼的時(shí)候可能感覺(jué)不到別人的思路 只能看到代碼 所以感覺(jué)吃力 我也是這樣 說(shuō)到底還是打少了 哈哈
2016-12-13 回復(fù) 有任何疑惑可以回復(fù)我~
查看1條回復(fù)

set集合是沒(méi)有g(shù)et的方法

0 回復(fù) 有任何疑惑可以回復(fù)我~

?p1.cards.add(c1);//執(zhí)行到這里就報(bào)空指針異常

??p2.cards.add(c2);

??p1.cards.add(c3);

??p2.cards.add(c4);

??System.out.println("玩家"+p1.name+"獲得牌:"+c1.type+c1.num+","+c3.type+c3.num);

??System.out.println("玩家"+p2.name+"獲得牌:"+c2.type+c2.num+","+c4.type+c4.num);

?}

這里錯(cuò)了,在存入集合以后是不能怎么取出來(lái)的

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

K_Muxs 提問(wèn)者

我前面有 Card c1 = washedList.get();取出放入c1中了
2016-09-30 回復(fù) 有任何疑惑可以回復(fù)我~
#2

qq_倔強(qiáng)人生_0 回復(fù) K_Muxs 提問(wèn)者

在你的card類(lèi)中你用的set集合把你取出來(lái)的四張牌全部放進(jìn)了set集合名為cards里面,而cards是set集合,他是沒(méi)有順序的,所以是取不出來(lái)的,只能通過(guò)遍歷一個(gè)個(gè)賦值。
2016-09-30 回復(fù) 有任何疑惑可以回復(fù)我~
#3

qq_倔強(qiáng)人生_0 回復(fù) K_Muxs 提問(wèn)者

p1.cards.add(c1);//執(zhí)行到這里就報(bào)空指針異常 p2.cards.add(c2); p1.cards.add(c3); p2.cards.add(c4); 你已經(jīng)把取出來(lái)的放進(jìn)了set集合cards里面了,所以一直都是null;
2016-09-30 回復(fù) 有任何疑惑可以回復(fù)我~
package?com.poker;

import?java.util.ArrayList;
import?java.util.Arrays;
import?java.util.List;
import?java.util.Random;
import?java.util.Scanner;

public?class?Playing?{
?
?public?List<Card>?cardsToSelect;??//沒(méi)有洗牌的序列
?public?List<Card>?washedList;??//洗牌后的序列
?public?Scanner?input?=?new?Scanner(System.in);
?public?Random?random?=?new?Random();
?Player?p1?=?new?Player();
?Player?p2?=?new?Player();

?public?Playing()?{
??this.cardsToSelect?=?new?ArrayList<Card>();
?}

?
?//把牌添加到cardsToSelect序列中
?public?void?addCard()?{
??Card[]?heitao?=?{?new?Card("黑桃",?"A"),?new?Card("黑桃",?"2"),
????new?Card("黑桃",?"3"),?new?Card("黑桃",?"4"),?new?Card("黑桃",?"5"),
????new?Card("黑桃",?"6"),?new?Card("黑桃",?"7"),?new?Card("黑桃",?"8"),
????new?Card("黑桃",?"9"),?new?Card("黑桃",?"10"),?new?Card("黑桃",?"J"),
????new?Card("黑桃",?"Q"),?new?Card("黑桃",?"K")?};
??Card[]?hongtao?=?{?new?Card("紅桃",?"A"),?new?Card("紅桃",?"2"),
????new?Card("紅桃",?"3"),?new?Card("紅桃",?"4"),?new?Card("紅桃",?"5"),
????new?Card("紅桃",?"6"),?new?Card("紅桃",?"7"),?new?Card("紅桃",?"8"),
????new?Card("紅桃",?"9"),?new?Card("紅桃",?"10"),?new?Card("紅桃",?"J"),
????new?Card("紅桃",?"Q"),?new?Card("紅桃",?"K")?};
??Card[]?meihua?=?{?new?Card("梅花",?"A"),?new?Card("梅花",?"2"),
????new?Card("梅花",?"3"),?new?Card("梅花",?"4"),?new?Card("梅花",?"5"),
????new?Card("梅花",?"6"),?new?Card("梅花",?"7"),?new?Card("梅花",?"8"),
????new?Card("梅花",?"9"),?new?Card("梅花",?"10"),?new?Card("梅花",?"J"),
????new?Card("梅花",?"Q"),?new?Card("梅花",?"K")?};
??Card[]?fangkuai?=?{?new?Card("方塊",?"A"),?new?Card("方塊",?"2"),
????new?Card("方塊",?"3"),?new?Card("方塊",?"4"),?new?Card("方塊",?"5"),
????new?Card("方塊",?"6"),?new?Card("方塊",?"7"),?new?Card("方塊",?"8"),
????new?Card("方塊",?"9"),?new?Card("方塊",?"10"),?new?Card("方塊",?"J"),
????new?Card("方塊",?"Q"),?new?Card("方塊",?"K")?};
??cardsToSelect.addAll(Arrays.asList(heitao));
??cardsToSelect.addAll(Arrays.asList(hongtao));
??cardsToSelect.addAll(Arrays.asList(meihua));
??cardsToSelect.addAll(Arrays.asList(fangkuai));
??System.out.println("==========創(chuàng)建撲克牌==========");
??System.out.println("==========創(chuàng)建撲克牌成功==========");
?}

?//利用循環(huán)把添加的牌打印出來(lái)
?public?void?showCard()?{
??int?size?=?cardsToSelect.size();
??System.out.println("==========添加了如下?lián)淇伺?=========");
??for?(int?i?=?0;?i?<?size;?i++)?{
???System.out.print(cardsToSelect.get(i).type
?????+?cardsToSelect.get(i).num?+?",");
??}
??System.out.println();
?}
?
?//創(chuàng)建兩個(gè)玩家
?public?void?creatPlayer()?{
??while?(true)?{
???try?{
????System.out.println("輸入第一個(gè)玩家的ID:");
????p1.id?=?input.nextInt();
????System.out.println("輸入第一個(gè)玩家的姓名:");
????p1.name?=?input.next();??
????System.out.println("輸入第二個(gè)玩家的ID:");
????p2.id?=?input.nextInt();
????System.out.println("輸入第二個(gè)玩家的姓名:");
????p2.name?=?input.next();
????break;
???}?catch?(Exception?e)?{
????System.out.println("輸入有誤,請(qǐng)重試");
????input?=?new?Scanner(System.in);
???}
??}
??System.out.println("歡迎玩家:"+p1.name+","+p2.name);
?}

?public?void?washAndGetCard()?{
??int?size?=?cardsToSelect.size();//獲得cardsToSelect序列的長(zhǎng)度
??List<Card>?washedList?=?new?ArrayList<Card>();//生成一個(gè)新的序列存放無(wú)序的牌
??for?(int?i?=?0;?i?<?size;?i++)?{
???Card?temp?=?new?Card();
???do?{
????temp?=?cardsToSelect.get(random.nextInt(size
???}?while?(washedList.contains(temp));
???washedList.add(temp);));//利用生成隨機(jī)數(shù)在原本的序列中隨機(jī)抽取不同的牌添加到新的序列中去
??}
??Card?c1=washedList.get(0);//因?yàn)閣ashedList里面的牌是無(wú)序的
??Card?c2=washedList.get(1);//所以直接取前四張牌
??Card?c3=washedList.get(2);
??Card?c4=washedList.get(3);
??p1.cards.add(c1);//執(zhí)行到這里就報(bào)空指針異常
??p2.cards.add(c2);
??p1.cards.add(c3);
??p2.cards.add(c4);
??System.out.println("玩家"+p1.name+"獲得牌:"+c1.type+c1.num+","+c3.type+c3.num);
??System.out.println("玩家"+p2.name+"獲得牌:"+c2.type+c2.num+","+c4.type+c4.num);
?}

?public?static?void?main(String[]?args)?{

??Playing?t?=?new?Playing();
??t.addCard();
??t.showCard();
??t.creatPlayer();
??t.washAndGetCard();
??
?}
}
//Card類(lèi)

package?com.poker;

public?class?Card?{

?public?String?num;
?public?String?type;

?public?Card(String?type,?String?num)?{
??this.num?=?num;
??this.type?=?type;
?}
?
?public?Card(){
??
?}
}
//Player類(lèi)

package?com.poker;

import?java.util.HashSet;
import?java.util.Set;

public?class?Player?{
?
?public?String?name;
?public?int?id;
?public?Set<Card>?cards;
?
?public??Player(int?id,String?name){
??this.id=id;
??this.name=name;
??this.cards?=?new?HashSet<Card>();
?}
?public?Player(){
??
?}
}


0 回復(fù) 有任何疑惑可以回復(fù)我~

washedList是一個(gè)我存放無(wú)序撲克牌的序列,檢查過(guò)了是可以的。

我用get()方法把前四張牌取出來(lái),添加到玩家的Set集里面去

p1.cards.add(c1);

為什么執(zhí)行到這一步就報(bào)異常 空指針異常?

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
Java入門(mén)第三季
  • 參與學(xué)習(xí)       409768    人
  • 解答問(wèn)題       4510    個(gè)

Java中你必須懂得常用技能,不容錯(cuò)過(guò)的精彩,快來(lái)加入吧

進(jìn)入課程

撲克牌游戲關(guān)于玩家獲得手牌出現(xiàn)空指針異常

我要回答 關(guān)注問(wèn)題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)