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

时间:2017-02-02 14:33:17

标签: java arraylist add overwrite

我试图写一个简单的程序,你会收集"收集"带有点的不同对象给出了一种分数。例如,"保时捷"将给出用户确定的点,如果输入新点,则该点应添加到旧值上。所以,让我们说你给保时捷" 100分然后加50,总积分应为150.该程序还应存储不同车辆的总积分(因此,如果我添加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()只是我扫描仪的方法

2 个答案:

答案 0 :(得分:3)

这里有一个setter,根据定义它会替换值。

您应该创建一个简单的方法,为现有方法添加一个值。

我对数字字段使用简单的语法(非常标准):

public void addPoint(int points){
    this.points += points;
}

如果您愿意,可以在此处进行一些验证,拒绝否定值或其他任何内容。

编辑:对于第二个问题(这应该是一个不同的问题,但这是一个小错误)

您正在使用Car car = findCar(carName);获取实例,如果它为null,则不执行任何操作。但是,在您添加一些积分后,您carlist.add(car);,除非您使用findCar将其删除,否则您将在此列表中添加相同的实例。

答案 1 :(得分:0)

Car class:

中添加方法
public int getPoints(){
    return points;
}

然后替换increment-call:

System.out.println("Add more points for the car: ");
car.setPoints(car.getPoints()+readInt());