gpt4 book ai didi

java - 如何在 Java 的 for 循环中获取不同数据类型的多个用户输入?

转载 作者:行者123 更新时间:2023-12-02 01:40:32 25 4
gpt4 key购买 nike

我试图提示用户输入一个字符串,该字符串将存储在一个字符串数组中,后面跟着一个输入的 int,该 int 将被放入一个 int 数组中。

我遇到了一个问题:打印了第一行,但没有提示用户输入字符串。然后立即打印第二条打印语句,并且用户只能输入 int。

到目前为止我已经:

    int i, n = 10;
String[] sentence = new String[1000];
int[] numbers = new int[1000];



for(i = 0; i < n; i++)
{
System.out.println("Enter String" + (i + 1) + ":");
sentence[i] = scan.nextLine();

System.out.printf("Enter int " + (i + 1) + ":");
numbers[i] = scan.nextInt();
}

作为输出,我得到:

Enter String 1:
Enter int 1:

这里可以输入一个int,它被存储到int数组中。但不能为字符串数组输入字符串。

请帮忙。

最佳答案

此问题是由 nextInt() 方法引起的。

这里发生的事情是 nextInt() 方法消耗用户输入的整数,但不消耗用户输入末尾的换行符,该换行符是在您按 enter< 时创建的/kbd> 键。

因此,当您在输入整数后按 enter 时,下一次调用 nextLine() 会消耗上次循环迭代中未消耗的新行字符通过 nextInt() 方法。这就是为什么它在下一次循环迭代中跳过 String 的输入,并且不等待用户输入 String

解决方案

您可以通过在 nextInt() 调用之后调用 nextLine() 来使用新行字符

for(i = 0; i < n; i++)
{
System.out.println("Enter String" + (i + 1) + ":");
sentence[i] = scan.nextLine();

System.out.printf("Enter int " + (i + 1) + ":");
numbers[i] = scan.nextInt();
scan.nextLine(); // <------ this call will consume the new line character
}

关于java - 如何在 Java 的 for 循环中获取不同数据类型的多个用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54495578/

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