Java String自动分配空值

时间:2014-01-17 22:05:59

标签: java string

在下面的代码中,在第一个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]);

    }

}

}

2 个答案:

答案 0 :(得分:1)

符合所发生情况描述的场景是当您在第一行输入数字时,其余行是框的字符串。

但是nextInt()方法没有超过第一个换行符,所以第一次调用nextLine()时,它会匹配该行的其余部分,直到第一个换行符{{1 (不是"")。

致电null后,在nextInt()循环之前插入对newLine()的呼叫,以绕过第一个换行符。

for

答案 1 :(得分:0)

当你在输入第一个数字后你输入后输入并且空行,这就是为什么nextLine()返回空字符串,你可以使用这个boxNumber = in2.nextInt();相反,但我建议考虑另一种方式,通常你不需要两个扫描仪实例