2017-03-16 105 views
2

我一直在尋找一種方法來使用計數來遍歷我的列表,但我還沒有找到一種方法,我試圖使用var count = 0無濟於事。斯卡拉計數變量

這是我的代碼,有人可以告訴我通過這個迭代的正確方法,而不是硬編碼0.謝謝。

if(order != null) { 
     for(i <- order.get(0).getItems) { 
      i.getProduct.getName 
      i.getProduct.getDescription 
      "%.2f".format(i.getPrice)) 
      i.getQuantity() 
      "%.2f".format(i.getItemTotal)) 
     } 
} 
+0

它看起來像你試圖打印的東西,但你的問題提到計數的東西。你想要計算什麼?打印的目標是什麼? – Vidya

+0

我只是試圖打印存儲在列表中的訂單的一些細節,需要遍歷列表來訪問它們。有沒有辦法只使用一個變量? – Lee

+0

簡單的第一遍答案是'import scala.collection.JavaConverters._'然後做'for(order < - orderList.asScala){}' – clay

回答

2

答案,這樣做第一:

import scala.collection.JavaConverters._

這可以讓你把Java集合到Scala集合,使用asScala更容易處理。

正如我在我的評論中提到的,我不知道你在想什麼;好像你在印刷東西。但是,如果你,比如,要在全體訂單的所有項目,你可以這樣做:

val totalItems = orders.asScala.foldLeft(0)(_ + _.getItems.size) 

還有其他幾種方法來產生相同的總。

2

可以導入進口scala.collection.JavaConverters._到Java集合轉換爲Scala集合。這將處理所有事情,你可以使用scala函數。所以不需要重複計算。

import scala.collection.JavaConverters._ 
@for(order <- orders) { 
    <!-- Start of For loop - For each p in products add a row --> 
    @for(i <- order.getItems) { 
    <tr> 
     <td>@i.getProduct.getName</td> 
     <td>@i.getProduct.getDescription</td> 
     <td>&euro; @("%.2f".format(i.getPrice))</td> 
     <td>@i.getQuantity()</td> 
     <td>&euro; @("%.2f".format(i.getItemTotal))</td> 
    </tr> 
    }<!-- End of For loop --> 
} 

更新由於您使用的是Java的ArrayList顯然是以建議從維迪亞