[英]Problem with Reading a txt File into an ArrayList
我正在编写一个代码来从 txt 文件中读取一些文本,如下所示:
Car:
Model: Ford
Color: Red
Cost: $123123.91
Car Type: Sedan
Towing: Included
Car:
Model: Mitsubishi
Color: Yellow
Cost: $12312.00
Car Type: Sedan
Towing: Not Included
Car:
Model: Honda
Color: Grey
Cost: $1231.00
Car Type: Sedan
Towing: Not Included
到 Arraylist。 但所有文本都存储在索引 position 0 中。
我希望每个订单都存储在不同的索引 position 中。
Arraylist 'orders' 存储输入到 gui 中的订单,完美运行。 按下退出时,这些命令将写入文本文件
在下一次运行时,当我按下加载按钮时,所有订单都从同一个文本文件读取到不同的 ArrayList 'orders2'。
我曾尝试使用 for 循环,但问题似乎与我将订单读取/存储到文本文件的方式有关。
public void save() throws FileNotFoundException {
PrintWriter pw = new PrintWriter(new FileOutputStream(fileName, false));
for (Object orderlist : orders) {
pw.println(orderlist);
}
pw.close();
}
public void load() throws FileNotFoundException {
FileInputStream fileIn = new FileInputStream(fileName);
Scanner scan = new Scanner(fileIn);
scan.useDelimiter(" ");
while (scan.hasNext()) {
orders2.add(scan.next());
}
System.out.println(orders2.get(0));
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Exit")) {
try {
save();
} catch (FileNotFoundException f) {
f.printStackTrace();
}
System.exit(0);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
}
扫描仪通过标记 stream 您将其作为输入来工作。 标记是由分隔符分隔的东西。 您告诉它标记由两个空格分隔。 鉴于您的文本文件中的任何地方都不包含 2 个空格,因此整个内容(从汤到坚果)都是一个单一的标记。
如果我阅读了您的代码(不完整),我会看到for (Object orderlist: orders)
:这不对; 这意味着订单是订单列表的列表或数组。 你真的有订单清单吗? 数组和列表都不会那样打印,所以我对此表示怀疑; 这意味着您的变量名称具有误导性,可能是因为您不太了解自己的代码在做什么。 此外,使用Object
可能不正确。 当然, orders
是Order
对象的数组或列表,也可能是String
对象。
更清晰的代码将更容易理解和评论。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.