2017-01-20 39 views
0

我需要從列表中找到最低股票價格。這是我的代碼,但因爲.min(myList)在if語句之外,myList無法找到。如果我把它放在if語句中,它會多次打印相同的東西。有誰知道如何解決這個問題?如何使用java在新列表中打印最小值?

public SalesOrderLine checkStock(PurchaseOrderLine poLine){ 

    for (Iterator i = stock.stockItems.iterator(); i.hasNext();) { 

      StockItem stockItem = (StockItem)i.next(); 
      if ((poLine.product == stockItem.product) && (poLine.quantity <= stockItem.quantity)) 
      { 
       System.out.println(name +" : Found a Match for " + poLine.product + " with Offer Price: " + stockItem.price); 
       List myList=new ArrayList(); 
       myList.add(stockItem.price); 
      }  

      Object minimumPrice=Collections.min(myList); 
      System.out.println(minimumPrice); 

     } 
+0

幹嘛還要創建一個ArrayList結束後?如果你想獲得單一的最小值,那麼得到一個最小值 - 不需要創建一個新的列表。 –

+0

在您的for循環中,存儲您遇到的'stockItem.price'的最小值 –

+0

您使用的是哪個版本的Java?這看起來很古老。 – 4castle

回答

-3

將列表的定義移至for循環之前。現在你每次都創建一個新的。

public SalesOrderLine checkStock(PurchaseOrderLine poLine){ 
    List myList=new ArrayList(); 

    for (Iterator i = stock.stockItems.iterator(); i.hasNext();) { 

     StockItem stockItem = (StockItem)i.next(); 
     if ((poLine.product == stockItem.product) && (poLine.quantity <= stockItem.quantity)) 
     { 
      System.out.println(name +" : Found a Match for " + poLine.product + " with Offer Price: " + stockItem.price); 
      myList.add(stockItem.price); 
     } 
    } 
    Object minimumPrice=Collections.min(myList); 
    System.out.println(minimumPrice); 
} 

這將使你的Collections.min(myList);知道myList中是什麼,以及防止重複被打印出來。

- 編輯 -

嚇人袋熊在他的評論中指出的那樣,如果你想要的是最低的價格,就可以完全避免的名單,只是跟蹤哪些是通過項目最低的爲你循環。

+0

爲什麼Collections.min在循環中? –

+0

我的不好。以爲我把它搬出去了。我會編輯它。 –

+0

我現在得到的錯誤: 異常在線程「主」java.util.NoSuchElementException – Olivia

-1

1)循環

2)不要Collections.Min開始之前將您的表聲明循環

public SalesOrderLine checkStock(PurchaseOrderLine poLine) { 

     List myList = new ArrayList(); 
     for (Iterator i = stock.stockItems.iterator(); i.hasNext();) { 

      StockItem stockItem = (StockItem) i.next(); 
      if ((poLine.product == stockItem.product) && (poLine.quantity <= stockItem.quantity)) { 
       System.out.println(name + " : Found a Match for " + poLine.product + " with Offer Price: " + stockItem.price); 
       myList.add(stockItem.price); 
      } 

     } 
     Object minimumPrice = Collections.min(myList); 
     System.out.println(minimumPrice.toString()); 
    }