在下面的代码中,在第一个for循环的第一次迭代中,框[a]会自动分配一个空值。
迭代的其余部分很好(接受用户输入)。只有第一个问题是自动分配空值。
有谁知道为什么会这样?谢谢。
package testing;
import java.util.Scanner;
public class Testing {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Scanner in2 = new Scanner(System.in);
int boxNumber;
boxNumber = in.nextInt();
String[] boxes = new String[boxNumber];
System.out.println(boxNumber);
for(int a=0; a <= boxes.length - 1; a++){
boxes[a] = in.nextLine();
System.out.println(boxes[a]);
}
int packageNumber;
packageNumber = in2.nextInt();
String[] packages = new String[packageNumber];
System.out.println(packageNumber);
for(int n=0; n <= packageNumber - 1; n++){
packages[n] = in.nextLine();
System.out.println(packages[n]);
}
}
}
答案 0 :(得分:1)
符合所发生情况描述的场景是当您在第一行输入数字时,其余行是框的字符串。
但是nextInt()
方法没有超过第一个换行符,所以第一次调用nextLine()
时,它会匹配该行的其余部分,直到第一个换行符{{1 (不是""
)。
致电null
后,在nextInt()
循环之前插入对newLine()
的呼叫,以绕过第一个换行符。
for
答案 1 :(得分:0)
当你在输入第一个数字后你输入后输入并且空行,这就是为什么nextLine()返回空字符串,你可以使用这个boxNumber = in2.nextInt();相反,但我建议考虑另一种方式,通常你不需要两个扫描仪实例