有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正试图写一个简单的程序,你将“收集”不同的对象与点,给出一种分数。例如,“Porsche”将获得一个由用户确定的点,如果您输入一个新点,该点将添加到旧值上。假设你给“保时捷”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) 个答案

  1. # 1 楼答案

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

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

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

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

    如果愿意,您可以在这里进行一些验证,拒绝负值或其他任何内容

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

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

  2. # 2 楼答案

    Car类中添加一个方法:

    public int getPoints(){
        return points;
    }
    

    然后替换增量调用:

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