我正在编写代码以从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
到一个数组列表。但是所有文本都存储在索引位置0。
我希望每个订单都存储在不同的索引位置。
Arraylist的“订单”存储输入到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);
}
}
答案 0 :(得分:0)
扫描程序通过标记化您提供的输入流来工作。令牌是由分隔符分隔的事物。您告诉它令牌由两个空格分隔。鉴于您的文本文件在其中的任何地方都不包含2个空格,所以整个内容(从坚果到坚果)都是一个标记。
如果我阅读了您的代码(不完整),就会看到for (Object orderlist : orders)
:这是不对的。这意味着订单是订单的列表或列表列表。您真的有订单清单吗?数组和列表都不会那样打印,所以我对此表示怀疑。这意味着您的变量名具有误导性,可能是因为您不太了解自己的代码在做什么。此外,使用Object
可能不正确。当然,orders
是Order
对象或者也许String
对象的数组或列表。
更清晰地了解此代码将更易于理解和评论。