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

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

關于java中scanner對象重復使用的問題

手機拍的,電腦無法上網,見諒。

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

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

正在回答

2 回答

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

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

慕粉4241372 提問者

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

慕粉4241372 提問者

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

CatzzZ 回復 慕粉4241372 提問者

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

CatzzZ 回復 CatzzZ

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

加一個finally試試


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

舉報

0/150
提交
取消
Java入門第三季
  • 參與學習       409767    人
  • 解答問題       4543    個

Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧

進入課程

關于java中scanner對象重復使用的問題

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

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

幫助反饋 APP下載

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

公眾號

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