JAVA中的hasNextInt()方法多次調用只有一個結果的原因


看下面代碼:

1 do {
2 System.out.println("請輸入您的納稅人類型:\n1 一般納稅人\n2 小規模納稅人");
3 if (sc.hasNextInt()) {
5 i = sc.nextInt();
6 }
7 } while (i != 1 && i != 2);


本題 本來目的是想 選擇輸入納稅人類型 如果輸入的不是INT類型的話,提示重新輸入。

但運行后卻發現不是這樣,如果輸入的不是INT類型的,會一直打印上面那句話 卻不讓輸入了。一開始想不通為什么。后來老師給講解了,掃描器掃描一個值,是執行hasnextxxx方法后第一次的掃描輸入,也就是說當第一次執行hasnextint方法后 之后再調用 的此方法的值 都是false了。所以不執行了。也就是說hasnextxxx方法只檢察一次掃描到的值。記住這是特性!

怎么讓它再次執行掃描輸入呢,需要重新實例化掃描器sc=new Scanner(System.in) 就可以了,如下:

1 do {
2 System.out.println("請輸入您的納稅人類型:\n1 一般納稅人\n2 小規模納稅人");
3 sc=new Scanner(System.in);
4 if (sc.hasNextInt()) {
5 i = sc.nextInt();
6 }
7 } while (i != 1 && i != 2);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM