2017-03-16 97 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显然是以建议从维迪亚