问题
Please help me to correct error. Please help to understand the error and guide me to resolve.
Asset name: Laptop Asset number: 1 Asset model: Pavilion Notebook Assigned date: 28/08/2017 Price: 62000 Do you want to continue?(Yes/No) Yes
Asset name: Speakers Asset number: 2 Asset model: 5.1 Assigned date: 12/07/2017 Price: 12000 Do you want to continue?(Yes/No) No
Asset.No : 1 | Name : Laptop | Model : Pavilion Notebook | Last Assigned Date : 28-08-2017 | Price : 62000.0
Asset.No : 2 | Name : Speakers | Model : 5.1 | Last Assigned Date : 12-07-2017 | Price : 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:
Your error description is missleading. You store your values in the same asset
and add that again and again in your list. So your list contains "input times" the last asset. Move the def asset = new Asset()
into your loop to fix that.
来源:https://stackoverflow.com/questions/47121976/last-value-is-printed-instead-of-all-values-using-list-each-in-groovy