2013-12-22 24 views
-1

我的程序应该打印在关闭文件时完成的所有操作。问题是,它打印一切,因为我想要除了项目列表是一个数组。所以,我想我的问题是在复制数组。这里是当它的证实,这样我打印阵列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++; 

一试,打印出来它未能

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]; 
} 

顺序获取数组sotored我的代码部分。

   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

你是什么意思?请告诉我们你得到了什么样的输出,以及与你的期望有什么不同。 'Arrays.toString()'? –

+0

我在失败中得到的输出是我打印的所有东西,除了itms,这是一个数组,我写了一个for循环打印它。请问我编辑它的第三个代码是什么 – user3126275

回答

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),因为如果不是这样,你就不会进入else块。

+0

所以,我的方法返回并添加项目是正确的,对吗?谢谢! – user3126275

+0

请参阅我的代码的第三部分。我编辑它,它仍然不打印它数组:\ – user3126275

+0

我仍然没有看到你正在打印它,你有没有编辑你的问题在这里的代码? 'else if(o2 [i] .getCount()> 4){ob2_println(o2 [i] .toString()+“\ n -------------- \ n” ); for(int j = 0; i 3yakuya