为什么这个for-loop让我在第一个循环中输入文本?

我想要做的是要求用户输入一些字符串以读入数组,然后要求用户输入该字符串数并将其读入数组。 当我运行这段代码时,它从不要求我输入第一个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():使此扫描程序超过当前行并返回跳过的输入。