使用 Scanner 类输入

2024-04-30

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


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

我从过去的经验中了解到的是 .nextInt() 或 .nextDouble() 将继续搜索,直到整数或双精度数 在同一行或下一行中找到并不重要

nextInt() and 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.

For .next() and .nextLine(),

.next():仅读取并返回字符串,直到遇到空格或EOF.

.nextLine():返回字符串,直到遇到\n or \r or EOF。意思是,它返回整行。


光标位置

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.

我希望它有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Scanner 类输入 的相关文章

随机推荐