gpt4 book ai didi

java - Scanner.nextInt() 方法与 Scanner.nextLine() 相比如何工作

转载 作者:太空宇宙 更新时间:2023-11-04 12:10:10 26 4
gpt4 key购买 nike

我最近刚刚开始学习Java。有一个练习要求我拆分并显示由空格键分隔的数字。标准输入基本上是这样的:

2
2 2

第一行是数组中整数的数量。第二行是数组这是我使用的第一个代码块

   import java.util.*;

/* Name of the class has to be "Main" only if the class is public. */
public class Main
{
public static void main (String[] args)
{
Scanner reader= new Scanner(System.in);
int t=reader.nextInt();
String []s=reader.nextLine().split(" ");
for(int i=0;i<=t-1;i++)
{
System.out.println("The "+(i+1) +" number is "+s[i]);
}
}
}

编译并运行时出现此错误

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Main.main(Main.java:15)

但是,当我将 reader.nextInt() 更改为 reader.nextLine() 并将其解析为整数时,它工作得很好

import java.util.*;

/* Name of the class has to be "Main" only if the class is public. */
public class Main
{
public static void main (String[] args)
{
Scanner reader= new Scanner(System.in);
int t=Integer.parseInt(reader.nextLine());
String []s=reader.nextLine().split(" ");
for(int i=0;i<=t-1;i++)
{
System.out.println("The "+(i+1) +" number is "+s[i]);
}
}
}

这就是输出的样子

The 1 number is 2
The 2 number is 2

那么为什么它不能与 reader.nextInt() 一起使用?

编辑关于读取 Line 字符的内容,我仍然不明白。它正常读取字符串

最佳答案

int t=reader.nextInt();

读取 2。

reader.nextLine()

读取下一个换行符。

再次调用它将读取2 2,正如预期的那样。

检查s的内容。它可能是空的,或者没有 2 个元素,因此出现错误

当您读取该行两次时,您会消耗换行符

有关详细信息,请参阅 Scanner is skipping nextLine() after using next(), nextInt() or other nextFoo() methods

关于java - Scanner.nextInt() 方法与 Scanner.nextLine() 相比如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39938061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com