2013-12-22 44 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