我的程序应该打印关闭文件时已完成的所有操作。问题是除了作为数组的项目列表之外,它打印出我想要的所有内容。所以,我想我的问题在于协调数组。这是我的代码的一部分
public Item[] getItems() {
return itemslist;
}
public void addItems(Item[] itm) {
for (int i = 0; i < itm.length; i++)
if (itm[i] != null)
itemslist[i] = itm[i];
}
当数组被确认时,该数组会被放入数组中,以便我将数组o2打印在一个文件中
if (jop == JOptionPane.OK_OPTION) {
o2[orders] = new Order(o1.getId());
o2[orders].setId(o1.getId());
o2[orders].setTotalPrice(o1.getTotalPrice());
o2[orders].setBarista(o1.getBarista());
o2[orders].addItems(o1.getItems());
orders++;
尝试打印失败的那些。
outFile=new File("Orderslist.txt");
out=new FileOutputStream(outFile);
ob=new PrintWriter(out);
for(int i=0;i<orders;i++){
itms=new Item[o2[i].getItems().length];
itms=o2[i].getItems();
if(o2[i]!=null){
if(o2[i].getCount()<=4){
ob.println(o2[i].toString()+"\n--------------\n");
for(int j=0;i<itms.length;j++){
System.out.print(itms[j].toString());}
ob.println("--------------\n"+"\nTotal: "+o2[i].getTotalPrice()+"\n\n\n");}
else if(o2[i].getCount()>4){
ob.println(o2[i].toString()+"\n--------------\n");
for(int j=0;i<itms.length;j++){
o2[i].getItems()[j].toString();}
ob.println("--------------\n"+"\nTotal: "+o2[i].getTotalPrice());
ob.println("\n\nDiscount 20%\n\n--------------\nTotal price#: "+(o2[i].getTotalPrice()-(o2[i].getTotalPrice()*0.2))+"\n\n\n");
}
}
}
ob.close();
答案 0 :(得分:0)
for (int j = 0; i < itms.length; j++)
if( itms[i]!=null)
o2[i].getItems()[j].toString();
这件作品没有做任何事情,因为它只返回一个字符串 - 并没有做任何事情(既不打印也不指定某些东西)。因此,您只需浏览整个数组,并对其元素不执行任何操作。因此,如果o2[i].getCount() > 4
您将不会打印它。
另请注意,当您的第一个if语句为:if (o2[i].getCount() <= 4)
时,在您的else
语句中,您不需要检查if (o2[i].getCount() > 4)
,因为如果不是,则会没有进入其他区块。