我想要做的是要求用户输入一些字符串以读入数组,然后要求用户输入该字符串数并将其读入数组。当我运行这段代码时,它永远不会要求我输入第一个for循环的第一个循环,只打印出“String#0:String#1:”;然后我可以输入文字。为什么这样,我做错了什么?

import java.util.Scanner;

public class ovn9 
{
public static void main(String[] args)
{
    Scanner sc=new Scanner(System.in);

    System.out.print("Number of inputs: ");

    int lines= sc.nextInt();
    String[] text=new String[lines];

    for(int x=0; x<text.length; x++)
    {
        System.out.print("String #"+x+": ");
        text[x] = sc.nextLine();
    }

    for(int y=0; y<text.length; y++)
        System.out.println(text[y]);

}
}
有帮助吗?

解决方案

缓冲

输入输入数量时,

nextInt()不会消耗输入缓冲区中的换行符。在for循环的迭代0中,缓冲区中已经有一行输入, nextLine()可以立即完成,程序将仅在迭代1中等待新的输入行。忽略换行符在输入中,您可以在输入for循环之前添加另一个 nextLine()调用。

其他提示

也许您应该更改循环以使用'sc.next()'

for ( int x = 0; x < lines; x++ ) {
    System.out.print("String #" + x + ": ");
    text[x] = sc.next();
}

可以通过Java API

来解释

String next():从此扫描仪中查找并返回下一个完整的标记。

String nextLine():使此扫描程序超过当前行并返回跳过的输入。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top