【问题标题】:Adding points to an object without overwriting the existing points在不覆盖现有点的情况下向对象添加点
【发布时间】:2017-02-02 14:33:16
【问题描述】:

我正在尝试编写一个简单的程序,您将在其中“收集”带有分数的不同对象,从而给出一种分数。例如,“保时捷”将获得一个由用户确定的分数,如果您输入一个新分数,该分数将被添加到旧值上。所以假设你给“保时捷” 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() 只是我的扫描仪的方法

【问题讨论】:

  • car.setPoints(car.getPoints() + readInt());?
  • 或者干脆创建一个方法addPoint(int),不禁止,getter和setter是一个标准但是你可以创建其他方法。
  • @IQV 非常感谢!哈哈...哦,伙计,我希望我能想到...跟进-似乎我正在创建同一辆车的副本。分数正在更新,但如果我将 50 和 100 加到同一个对象上,我现在得到 3 辆相同的汽车,但总数相同。仅在同一对象上添加分数需要什么?

标签: java arraylist add overwrite


【解决方案1】:

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

你应该创建一个简单的方法来为现有的方法增加一个值。

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

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

如果你愿意,你可以在这里做一些验证,拒绝负值或其他任何东西。

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

您正在使用Car car = findCar(carName); 获取实例,如果它为空,则不执行任何操作。但是在你添加一些点之后,你carlist.add(car);,所以除非你用findCar 删除它,否则你会在这个列表中添加相同的实例。

【讨论】:

  • 非常感谢!哈哈......哦,我希望我能想到这一点......另一个答案的重复回复:跟进 - 似乎我正在创建同一辆车的副本。分数正在更新,但如果我将 50 和 100 加到同一个对象上,我现在得到 3 辆相同的汽车,但总数相同。仅在同一对象上添加分数需要什么?
  • @zkulltrail 这是一个不同的问题,但由于您在更新后添加汽车,这似乎是逻辑;)如果 findCar 返回 null(而不是退出返回方法),您可以简单地添加一个新实例
  • 再次感谢!很抱歉所有重复的答案,仍在学习这个网站:)它只需要删除 carlist.add(car); 就可以了。干杯伙伴!
  • @zkulltrail,不用了,我只是说SO上的一个问题应该仅限于一个问题。但这在这里没有必要;)
【解决方案2】:

Car类中添加方法:

public int getPoints(){
    return points;
}

然后替换增量调用:

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

【讨论】:

    猜你喜欢
    • 2018-12-09
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    相关资源
    最近更新 更多