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

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

關(guān)于java中scanner對象重復(fù)使用的問題

手機(jī)拍的,電腦無法上網(wǎng),見諒。

58b7c01d0001788506580493.jpg
我是這樣理解的:創(chuàng)建一個scanner對象,可以重復(fù)使用。
但我剛剛寫了另一段代碼,卻出現(xiàn)問題

58b7c0d10001b2e506580493.jpg
創(chuàng)建一個整數(shù)i和scanner對象,然后輸入一個數(shù)賦值給i,如果是整數(shù)就break退出循環(huán),如果不是整數(shù)就拋出異常,再次循環(huán)。
但執(zhí)行后,輸入整數(shù)就正常,不是整數(shù),會一直死循環(huán)“請輸入整數(shù)”。
但我發(fā)現(xiàn),如果把創(chuàng)建scanner對象這一行放在如圖標(biāo)記中的位置,也就是try里面,結(jié)果就正常。
請問這是為什么?難道要重復(fù)建立scanner對象?scannner不是可以重復(fù)使用的嗎?

正在回答

2 回答

照你這么寫,應(yīng)該在異常處理中加一句scanner.nextLine().把掃描器的角標(biāo)引向下一行,另外放到里面是新創(chuàng)建了一個對象的中的輸入文本都不是這個新對象的東西了。還有建議異常是用來處理異常的,不是用來處理正常語句的,這個習(xí)慣不好。

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

慕粉4241372 提問者

請問我這個異常里面怎么寫比較規(guī)范呢?
2017-03-06 回復(fù) 有任何疑惑可以回復(fù)我~
#2

慕粉4241372 提問者

還有請問為何我舉得第一個例子不用加入scanner.(nextline)換行?
2017-03-06 回復(fù) 有任何疑惑可以回復(fù)我~
#3

CatzzZ 回復(fù) 慕粉4241372 提問者

首先你的第一個例子,是沒有異常的,Scanner,當(dāng)成功“接受”第一個輸入的數(shù)后就相當(dāng)于,光標(biāo)指向了下一行,等待下一次輸入,所以沒有問題。而當(dāng)你輸入的類型和賦值的不匹配就會發(fā)生異常。
2017-03-06 回復(fù) 有任何疑惑可以回復(fù)我~
#4

CatzzZ 回復(fù) CatzzZ

然后關(guān)于異常是用來維護(hù)代碼代碼健壯性,也就是說,當(dāng)程序發(fā)成了錯誤,我該怎么去解決這個錯誤,所以一般是用作處理的異常語句,一般到后期異常里放的東西一個是throw new RuntimeException(e) ; 把異常轉(zhuǎn)化為運行時異常,用于當(dāng)程序出錯時,調(diào)錯用。當(dāng)然練習(xí)的話,怎么思路順暢怎么來。一般做文本輸入其實都不用Scanner這個類,不太安全,也不太好處理,因為不能控制要輸什么才是正確的 , 一般都用BufferedReader這個類做輸入,再加上正則表達(dá)式之類的判斷語句,判斷用戶輸入的是否合法。
2017-03-06 回復(fù) 有任何疑惑可以回復(fù)我~
查看1條回復(fù)

加一個finally試試


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

舉報

0/150
提交
取消

關(guān)于java中scanner對象重復(fù)使用的問題

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

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

幫助反饋 APP下載

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

公眾號

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