在不覆盖现有点的情况下向对象添加点
Adding points to an object without overwriting the existing points
我正在尝试编写一个简单的程序,您可以在其中 "collect" 不同的带有分数的对象,从而给出一种分数。例如,"Porsche" 将被赋予一个由用户确定的点数,如果您输入一个新点数,则该点数将添加到旧值上。所以假设你给 "Porsche" 100 分,然后加 50,总分应该是 150。该程序还应该存储不同汽车的总分(所以如果我加一辆 BMW 有 100 分,总分应该是250(150分来自保时捷)。
首先,我通过我的 ArrayList 查找汽车,但是当我尝试添加新分数时,它只是用新值覆盖现有分数。
System.out.println("The name of the car: ");
String carName = readString();
Car car = findCar(carName);
if(car == null){
System.out.println("Car doesn't exist!");
return;
}
System.out.println("Add more points for the car: ");
car.setPoints(readInt());
carlist.add(car);
我想有一种简单的方法可以解决这个问题,但现在我一无所知,而且我的谷歌搜索技能也没有给我任何结果。
readInt() 和 readString() 只是我的扫描仪的方法
在Car
中添加一个方法class:
public int getPoints(){
return points;
}
然后替换increment-call:
System.out.println("Add more points for the car: ");
car.setPoints(car.getPoints()+readInt());
这里有一个 setter,根据定义它替换了值。
您应该创建一个简单的方法来为现有方法添加一个值。
我对数字字段使用简单的语法(也很标准):
public void addPoint(int points){
this.points += points;
}
如果你愿意,你可以在这里做一些验证,拒绝负值或其他任何东西。
编辑:第二个问题(这应该是一个不同的问题,但这是一个小错误)
您正在使用 Car car = findCar(carName);
获取实例,如果它为 null,则不执行任何操作。但是在你添加一些点之后,你 carlist.add(car);
,所以除非你用 findCar
删除它,否则你会在此列表中添加相同的实例。
我正在尝试编写一个简单的程序,您可以在其中 "collect" 不同的带有分数的对象,从而给出一种分数。例如,"Porsche" 将被赋予一个由用户确定的点数,如果您输入一个新点数,则该点数将添加到旧值上。所以假设你给 "Porsche" 100 分,然后加 50,总分应该是 150。该程序还应该存储不同汽车的总分(所以如果我加一辆 BMW 有 100 分,总分应该是250(150分来自保时捷)。
首先,我通过我的 ArrayList 查找汽车,但是当我尝试添加新分数时,它只是用新值覆盖现有分数。
System.out.println("The name of the car: ");
String carName = readString();
Car car = findCar(carName);
if(car == null){
System.out.println("Car doesn't exist!");
return;
}
System.out.println("Add more points for the car: ");
car.setPoints(readInt());
carlist.add(car);
我想有一种简单的方法可以解决这个问题,但现在我一无所知,而且我的谷歌搜索技能也没有给我任何结果。
readInt() 和 readString() 只是我的扫描仪的方法
在Car
中添加一个方法class:
public int getPoints(){
return points;
}
然后替换increment-call:
System.out.println("Add more points for the car: ");
car.setPoints(car.getPoints()+readInt());
这里有一个 setter,根据定义它替换了值。
您应该创建一个简单的方法来为现有方法添加一个值。
我对数字字段使用简单的语法(也很标准):
public void addPoint(int points){
this.points += points;
}
如果你愿意,你可以在这里做一些验证,拒绝负值或其他任何东西。
编辑:第二个问题(这应该是一个不同的问题,但这是一个小错误)
您正在使用 Car car = findCar(carName);
获取实例,如果它为 null,则不执行任何操作。但是在你添加一些点之后,你 carlist.add(car);
,所以除非你用 findCar
删除它,否则你会在此列表中添加相同的实例。