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



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

我遇到了打印第一行的问题,但没有提示用户键入字符串。然后立即打印第二个 print 语句,用户只能键入 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 数组中。但是,您不能为 String 数组输入字符串。

请帮忙。

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

这里发生的事情是nextInt()方法使用用户输入的整数,但不使用按 Enter 键时创建的用户输入末尾的新行字符。

因此,当您在输入整数后按 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
}

像这样放置 scan.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();
}

如果不能在第一次迭代中输入字符串值,请使用 sc.next(); 而不是 sc.nextLine()。

Scanner sc = new Scanner(System.in);
for(i = 0; i < n; i++);
    System.out.println("Enter String" + (i + 1) + ":");
    sentence[i] = sc.next();
    System.out.printf("Enter int " + (i + 1) + ":");
    numbers[i] = sc.nextInt();
    sc.nextLine();
}

相关内容

  • 没有找到相关文章

最新更新