ArrayList.split()方法不将所有元素添加到数组中

时间:2016-05-08 15:12:42

标签: arrays arraylist input split java.util.scanner

public static ArrayList<Laptop> readLaptopInputs(Scanner scanner) {
    ArrayList<Laptop> toReturn = new ArrayList<Laptop>();
    System.out.println("Provide information about each laptop, one per line in the format \"Brand, procSpeed, memory, HDD\".");
    while (scanner.hasNextLine() && scanner.next() != "done") {
        String line = scanner.nextLine();
        String[] info = line.split(", ");
        String brand = info[0];
        double procSpeed = Double.valueOf(info[1]);
        int memory = Integer.valueOf(info[2]);
        int hdd = Integer.valueOf(info[3]);
        Laptop toAdd = new Laptop(brand, procSpeed, memory, hdd);
        toReturn.add(toAdd);
    }
    return toReturn;
}

这是我读取Laptop对象输入的方法。方法声明和参数必须保持不变。然而,我得到的输出是一个长度为3而不是4的数组,跳过第一个参数(品牌)。这里发生了什么?

1 个答案:

答案 0 :(得分:0)

您的代码段跳过第一个令牌(品牌)的原因是您在while循环条件下通过scanner.next()调用明确地使用它。由于您尚未为扫描程序指定任何分隔符,因此第一次调用scanner.next()会扫描行到第一个空格,删除品牌并将其与“done”进行比较。 (作为旁注,请记住始终通过equals()方法比较字符串。)

由于我不知道您的文件格式以及您与“完成”进行比较的原因,我只能建议您在line.split(", ")之后检查该行调用