java中hasNextInt斷定後無窮輪回輸入else項的處理辦法。本站提示廣大學習愛好者:(java中hasNextInt斷定後無窮輪回輸入else項的處理辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是java中hasNextInt斷定後無窮輪回輸入else項的處理辦法正文
話不多說,下去就是干!
?12345678910111213141516171819202122232425262728293031323334353637 import java.util.Scanner; public class Test_hasNextInt { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); //關於hasNextInt斷定後無窮輪回輸入else項的處理方法 String next; int i; while(true) {// Scanner sc = new Scanner(System.in); //第一種處置辦法,把掃描器拿到外面來,每次輪回都創立一個新的掃描器.else語句裡直接提醒輸出毛病就行了 System.out.println("請輸出一個整數"); if (sc.hasNextInt()) { //假如經由過程應用 nextInt() 辦法,此掃描器輸出信息中的下一個標志可以說明為默許基數中的一個 int 值,則前往 true。 i = sc.nextInt(); //假如是輸出 22 33 會做兩次輸入 System.out.println(i); } else {// next = sc.next(); //第二種處置辦法,把scanner緩存裡的非int值吸收失落// System.out.println("您輸出的是:" + next + ",請從新輸出"); //留意:next() 查找並前往來自此掃描器的下一個完全標志 例如輸出: aa bb cc 那末這裡會先吸收aa ,然後輸入aa //然後再while()輪回,碰到if斷定緩存裡的bb 肯定不是整數後持續走else語句輸入bb.同理輸入完cc才會停滯 //假如輸出的是 aa 22 cc,那末先走else輸入aa, 再斷定出是22是整數走if語句,走完再次走cc能力停止 String nextLine = sc.nextLine(); //第三種處置辦法,算了 照樣吸收一行吧! System.out.println(nextLine); //假如輸出 22 aaa 333 ccc 第一次會走if把22吸收失落, //然後碰到aaa後走esls會把前面的整行都吸收失落 //固然,正常情形下沒有sc.hasNextInt()這一個斷定的時刻, //nextLine()會把整行都吸收失落,而這裡是由於被下面的nextInt()拿走了一個22 //所以照樣看須要把.第一種固然每次輸出都邑創立一次Scanner對象,然則也算是一種公道的處理方法! //總結:懂得緩存,就會明確了! } } } }
以上所述是小編給年夜家引見的java中hasNextInt斷定後無窮輪回輸入else項的處理辦法,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!