使用 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 打印最后一个值而不是所有值的主要内容,如果未能解决你的问题,请参考以下文章

如何从groovy中的多个字符串生成gstring?

GroovyGroovy 脚本调用 ( Groovy 脚本中的作用域 | 本地作用域 | 绑定作用域 )

Groovy'断言':如何显示价值?

在 Groovy 中打印闭包定义/源代码

06-Groovy-循环语句及关键字

在 GSP 中打印时在变量中评估 Groovy/Grails 代码