使用Scanner类输入

时间:2016-11-17 09:24:04

标签: java

我从过去的经验中了解到,nextInt()nextDouble()会继续搜索,直到整数或双重在同一行或下一行中找到它并不重要,而通过扫描程序类next()读取字符串作为输入,在空格之前考虑这些字符串并将光标保持在同一行中,nextLine()如果在next()之前使用剩余部分,则考虑剩余的字符串。代码中的nextLine(),有人可以帮助我更详细地理解这一点,特别是关于nextLine()它在哪里开始以及光标结束的位置?另外,如果我认为有任何错误,请告诉我。

1 个答案:

答案 0 :(得分:1)

你的第一个理解是错误的。

  

我从过去的经历中理解的是.nextInt()或   .nextDouble()将继续搜索,直到整数或双精度   在相同或下一行中找到无关紧要

nextInt()nextDouble()分别等待整数和双精度。如果它得到字符串而不是它的期望,它会抛出InputMismatchException

您可以运行此代码并亲自查看。

import java.util.Scanner;

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

根据你的引用:

  

.nextInt()或.nextDouble()将继续搜索直到整数   或者在同一行或下一行中找到双子并不重要

提供输入: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

我希望它有所帮助。