2016-11-17 174 views
-4

我從我過去的經驗中瞭解到的是nextInt()nextDouble()將繼續搜索,直到找到相同或下一行中的整數或雙精度值無關緊要,同時讀取字符串作爲輸入通過掃描儀類next()認爲那些字符串之前的空間,並保持光標在同一行,其中nextLine()將考慮next()如果在代碼nextLine()之前使用的剩菜剩餘,有人可以幫助我更詳細地瞭解這一點,特別是約nextLine()其中它開始和光標結束?另外,請告訴我,我認爲是否有錯誤是正確的。使用掃描儀類的輸入

+0

https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html –

回答

1

你的第一個理解是錯誤的。

我從我過去的經驗理解是.nextInt()或 .nextDouble()將繼續搜索,直到整數或雙 在同一或下一行也沒關係

被發現

nextInt()nextDouble()分別等待整數和2倍。如果它得到了字符串而不是它的期望,它會拋出InputMismatchException

您可以運行此代碼並親自查看。

import java.util.Scanner; 

public class Main 
{ 
    public static void main(String[] args) 
    { 
     Scanner s = new Scanner(System.in); 
     s.nextInt(); 
    } 
} 

根據您的報價:

.nextInt()或.nextDouble()將繼續搜索,直到整數 或雙在相同或沒有關係的下一行發現」 t matter

給出意見:Abcdf234gd。你不會得到234。你得到InputMismatchException

.next().nextLine()

.next():只有讀寫,直到遇到一個空格或EOF返回一個字符串。

.nextLine():返回字符串直到遇到\n\rEOF。意思是,它返回整條線。


的光標位置

next()

考慮字符串:

ABC DEF GHI JKL MNO PQR STU VWX YZ 

初始位置:

->ABC DEF GHI JKL MNO PQR STU VWX YZ 

當你調用next(),將光標移動到:

ABC ->DEF GHI JKL MNO PQR STU VWX YZ 

,並返回ABC


nextLine()

考慮字符串:

ABC DEF GHI JKL 
MNO PQR STU VWX 
YZ 

初始位置:

->ABC DEF GHI JKL 
MNO PQR STU VWX 
YZ 

當你調用nextLine(),將光標移動到下一行:

ABC DEF GHI JKL 
->MNO PQR STU VWX 
YZ 

,並返回ABC DEF GHI JKL

我希望它有幫助。

+0

謝謝,我不知道例外情況! – Rohitha