在不覆盖现有点的情况下向对象添加点

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 删除它,否则你会在此列表中添加相同的实例。