2016-11-17 127 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