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的数组,跳过第一个参数(品牌)。这里发生了什么?
答案 0 :(得分:0)
您的代码段跳过第一个令牌(品牌)的原因是您在while循环条件下通过scanner.next()
调用明确地使用它。由于您尚未为扫描程序指定任何分隔符,因此第一次调用scanner.next()
会扫描行到第一个空格,删除品牌并将其与“done”进行比较。 (作为旁注,请记住始终通过equals()
方法比较字符串。)
由于我不知道您的文件格式以及您与“完成”进行比较的原因,我只能建议您在line.split(", ")
之后检查该行调用