使用 groovy 中的 list.each 打印最后一个值而不是所有值
Posted
技术标签:
【中文标题】使用 groovy 中的 list.each 打印最后一个值而不是所有值【英文标题】:Last value is printed instead of all values using list.each in groovy 【发布时间】:2018-04-17 17:34:45 【问题描述】:请帮我纠正错误。请帮助理解错误并指导我解决。
资产名称: 笔记本电脑 资产编号: 1 资产模型: 亭子笔记本 指定日期: 28/08/2017 价钱: 62000 你想继续吗?(是/否) 是的
资产名称: 扬声器 资产编号: 2 资产模型: 5.1 指定日期: 2017 年 12 月 7 日 价钱: 12000 你想继续吗?(是/否) 没有
资产编号:1 |名称:笔记本电脑 |型号:Pavilion Notebook |最后分配日期:28-08-2017 |价格:62000.0
资产编号:2 |名称: 扬声器 |型号:5.1 |最后分配日期 : 12-07-2017 |价格:12000.0
class Main
static void main(String[] args)
Asset asset = new Asset()
List list = new ArrayList()
BufferedReader br = new BufferedReader(new InputStreamReader(System.in))
String userInput = "Yes"
while(userInput.equalsIgnoreCase("Yes"))
println "Asset name:"
asset.name = br.readLine()
println "Asset number:"
asset.assetNumber = Integer.parseInt(br.readLine())
println "Asset model:"
asset.model = br.readLine()
println "Assigned date:"
asset.lastAssignedDate = Date.parse("dd/MM/yyyy", br.readLine())
println "Price:"
asset.price = Double.parseDouble(br.readLine())
list.add(asset)
println "Do you want to continue?(Yes/No)"
userInput = br.readLine()
list.each
println it
class Asset
def name
def assetNumber
def model
def lastAssignedDate
def price
String toString()
sprintf "Asset.No : "+assetNumber+" | Name : "+name+"| Model : "+model+" | Last Assigned Date : "+lastAssignedDate.format("dd-MM-yyyy")+" | Price : "+price.round(2)
【问题讨论】:
【参考方案1】:您的错误描述具有误导性。您将您的值存储在同一个 asset
中,并一次又一次地将其添加到您的列表中。因此,您的列表包含最后一项资产的“输入时间”。将 def asset = new Asset()
移动到您的循环中以解决该问题。
【讨论】:
非常感谢您的帮助。以上是关于使用 groovy 中的 list.each 打印最后一个值而不是所有值的主要内容,如果未能解决你的问题,请参考以下文章