This question already has answers here:
Java calculator not executing if-statement [duplicate]

(3个答案)


6年前关闭。





在下面的代码中,在第一个for循环的第一次迭代中,box [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]);

    }

}

}

最佳答案

符合发生情况描述的情况是,当您在第一行中键入数字时,其余各行是框的字符串。

但是nextInt()方法不会前进到第一个换行符之后,因此,当您第一次调用nextLine()时,它会在行的其余部分匹配,直到第一个换行符""(不是null)为止。

在调用nextInt()之后,在newLine()循环之前插入对for的调用以绕过第一个换行符。

String firstNewLine = in.nextLine();
for(int a=0; a <= boxes.length - 1; a++){

10-05 22:37