在以下两个代码片段中,我首先询问所需的输入数量,并让用户输入特定类型的许多输入。当所需的输入是String类型时,除了我首先使用s.next()之外,它只需要少一点输入,而对于Integers,它可以正常工作。我不明白为什么。有人可以解释一下吗?感谢
带字符串输入和nextLine函数的第一个代码:
public static void main(String args[]){
Scanner s = new Scanner(System.in);
int num = s.nextInt();
String[] inputs = new String[num];
for (int i = 0; i < inputs.length; i++) {
inputs[i]=s.nextLine();
}
System.out.println("end of code");
}
使用整数输入和nextInt函数的第二个代码:
public static void main(String args[]){
Scanner s = new Scanner(System.in);
int num = s.nextInt();
Integer[] inputs = new Integer[num];
for (int i = 0; i < inputs.length; i++) {
inputs[i]=s.nextInt();
}
System.out.println("end of code");
}
答案 0 :(得分:0)
这是因为以下几行:
int num = s.nextInt();
你的下一个INT只返回INT,直到它到达\ n字符。
如果您有这样的测试文件:
4
1
2
3
4
您的角色代码如下所示:
4'\n'
1'\n'
2'\n'
3'\n'
4'\n'
因此,当您获取整数时,它将为扫描仪上的“nextInt()”方法获取4。当你告诉它抓住下一行“nextLine()”时,它将获取该行的剩余部分,它只是'\ n'并且不会将任何内容存储到数组的第一个值中。
反过来说,如果你告诉它抓住下一个整数“nextInt()”,它将搜索直到找到下一个整数,这将导致1进入数组的第一个值。