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

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

各位大神,我已經知道錯在構造方法中多寫了一個Scanner,相當于有定義了一個局部變量,我想這樣寫為什么錯了呢,

各位大神,15:40左右老師在講解自行輸入課程名稱查找是否重復的時候,

我已經知道錯在構造方法中在console前面多寫了一個Scanner,相當于又定義了一個局部變量,我想問這樣寫為什么錯了呢???

當我在SetTest類中創建了成員變量:private修飾的Scanner類型的屬性console

同時,我在SetTest有參構造方法中又定義了一個局部變量:Scanner類型的console

會出現下面的異常情況:Exception in thread "main" java.lang.NullPointerException,第三個截圖.

https://img1.sycdn.imooc.com//5c84d371000166f809510438.jpg

https://img1.sycdn.imooc.com//5c84d3760001f89709070232.jpg

https://img1.sycdn.imooc.com//5c84d37b0001116910450263.jpg


正在回答

4 回答

我第一個的靜態代碼塊寫的有問題 換成構造代碼塊吧

https://img1.sycdn.imooc.com//5c863c6c00012b5704700140.jpg

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

Levi_u

我擦 又截錯了 這個不用寫static
2019-03-11 回復 有任何疑惑可以回復我~

把第五行的Scanner去掉就可以了

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

就這幾行代碼他就報運行錯誤了,真不知道為啥

https://img1.sycdn.imooc.com//5c862c46000157a907870367.jpg

https://img1.sycdn.imooc.com//5c862c460001ad5e07990182.jpg


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

Levi_u

因為你第5行這個console只是局部變量,你并未給成員變量的console(即第三行的那個)賦值,所以你下面第9行調用next方法就是空指針異常,因為你這個成員變量并未初始化值
2019-03-11 回復 有任何疑惑可以回復我~
#2

霸氣小肆毛 提問者 回復 Levi_u

好的,感謝大佬
2019-03-11 回復 有任何疑惑可以回復我~
#3

Levi_u 回復 霸氣小肆毛 提問者

大佬可不敢當 就是個小渣渣而已
2019-03-11 回復 有任何疑惑可以回復我~

首先你問題不在你說的那塊代碼里,而且你那里這樣寫是沒問題的,但沒必要,因為看你的注釋大概是想說每次只創建出一個Scanner對象,還把Scanner抽出來了一個成員變量,但是實際上每次調用構造依舊是在構造里new的一個Scanner,那么你定義的這個就沒有用到啊 這里如果只想初始化一次,直接寫到靜態代碼塊就可以了,這樣只會跟著類加載的時候給初始化一次

static?{
this.console?=?new?Scanner(System.in);
}

接著說你下面的問題,首先是空指針異常,那么肯定是對象是空的,控制臺寫的很明白了120行,你這里沒截出來,大概是coursesToSelect這個對象是空的,空的調用contains方法肯定就出現空指針異常,然后繼續看上面一個報錯106行,testListContains方法,所以問題來源應該就是這個方法里返回的時候,對象返回了null,打個斷點看一下應該就可以了

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

霸氣小肆毛 提問者

非常感謝大佬的回答,但是我還是有點迷糊,我把我想問的又重新在您回答的下面給寫了一下,請大佬您再看一下唄,菜鳥非常感謝。
2019-03-11 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

各位大神,我已經知道錯在構造方法中多寫了一個Scanner,相當于有定義了一個局部變量,我想這樣寫為什么錯了呢,

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

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

幫助反饋 APP下載

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

公眾號

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