2016-07-03 23 views
-2

我聽說nextInt()只讀取整數,並在最後忽略\ n。 那麼爲什麼下面的代碼成功運行?java中的nextInt()

爲什麼沒有錯誤,我們進入一個 \ n必須留在緩衝值後, 在B上使用nextInt()的應該給一個錯誤,但事實並非如此。爲什麼?

import java.util.Scanner; 

    public class useofScanner { 
    public static void main(String[] args) { 
     Scanner scanner =new Scanner(System.in); 
     int a = scanner.nextInt(); 
     int b=scanner.nextInt(); 
     System.out.println(a+b); 
    } 
    } 
+4

它忽略了'\ N',但不會對'拋出異常\ N',它只是將其視爲分隔符。 –

+0

緩衝區中剩餘的\ n會發生什麼情況? –

+0

另請參閱http://stackoverflow.com/questions/32798803/understanding-scanners-nextline-next-and-nextint-methods – Tunaki

回答

1

掃描儀使用定界符模式將輸入分爲標記模式,默認情況下該定界符與空白相匹配。然後可以使用各種下一個方法將產生的令牌轉換爲不同類型的值。

例如,該代碼允許用戶讀取System.in一個號碼:

Scanner sc = new Scanner(System.in); 
int i = sc.nextInt(); 

作爲另一個例子,該代碼使long類型從條目myNumbers文件中的被分配給:

Scanner sc = new Scanner(new File("myNumbers")); 
    while (sc.hasNextLong()) { 
     long aLong = sc.nextLong(); 
    } 

掃描儀還可以使用除空白以外的分隔符。這個例子讀取從一個字符串幾項:

String input = "1 fish 2 fish red fish blue fish"; 
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*"); 
System.out.println(s.nextInt()); 
System.out.println(s.nextInt()); 
System.out.println(s.next()); 
System.out.println(s.next()); 
s.close(); 

打印輸出如下:

1 
2 
red 
blue 
相關問題