猿问

将列表中的重复数据与输入数据进行比较

我想使用我输入的数据检查列表中的重复 ID,然后增加列表中的 qty 变量。如果是新数据,它会添加一个新列表。


这是我的代码


public void addBarang(Barang barang){

    int id_barang = barang.getId();

    if(this.list.isEmpty())

    {

         list.add(barang);

    }

    else

    {

        for(int i=0;i<list.size();i++)

        {

            if(list.get(i).getId() != id_barang)

            {

                list.add(barang);

                System.out.println("Added");

                break;

            }

            if(list.get(i).getId() == id_barang)

            {

                int new_qty = list.get(i).getQty()+barang.getQty();

                list.get(i).setQty(new_qty);

            }

        } 

    }

}

即使我输入新数据,它总是会增加旧数据的数量,并且不会添加新数据(基本上总是以“else”部分结束)。


输入数据的代码


Gudang gudang1 = new Gudang(1,1);

System.out.println("ID: ");

int id = input.nextInt();

System.out.println("Jumlah: ");

int qty = input.nextInt();

System.out.println("Nama: ");

String name = input.next();

Barang barang = new Barang(id,name,qty);

gudang1.addBarang(barang);

类别项目


public class Barang {

public static int id;

private String name;

private int qty;


public Barang(int id, String name, int qty) {

    this.id = id;

    this.name = name;

    this.qty = qty;

}


public Barang(){

};


public int getId() {

    return id;

}


public String getName() {

    return name;

}


public int getQty() {

    return qty;

}


public void setId(int id) {

    this.id = id;

}


public void setName(String name) {

    this.name = name;

}


public void setQty(int qty) {

    this.qty = qty;

}


@Override

public String toString() {

    return "Barang{" + "id=" + id + ", name=" + name + ", qty=" + qty + '}';

}


梵蒂冈之花
浏览 154回答 3
3回答

慕标琳琳

请检查旧数据和新数据之间的 id 是否重复。如果您的 id 是唯一的,那么您可以利用 Map 并将 id 作为键,将 barang 对象作为值。每当您成功查找对象的地图增量数量字段时。

Qyouu

起初我猜我会改变:if(list.get(i).getId()&nbsp;!=&nbsp;id_barang)到:if(list.get(i).getId()&nbsp;!=&nbsp;barang.getId())也许 id_barang 与 barang 对象中存储的 id 不同。

开满天机

尝试使用 .equals 来比较数据是否存在于列表中
随时随地看视频慕课网APP

相关分类

Java
我要回答