gpt4 book ai didi

java - Arraylist 输出被覆盖

转载 作者:行者123 更新时间:2023-12-02 02:03:50 25 4
gpt4 key购买 nike

之前存储在数组列表中的数据正在被更新的数据替换。

代码如下

public class Telivision {

private String tvBrand;
private Double tvCost;
private Integer tvDimension;
private String tvScreen;
public String getTvBrand() {
return tvBrand;
}
public void setTvBrand(String tvBrand) {
this.tvBrand = tvBrand;
}
public Double getTvCost() {

return tvCost;
}
public void setTvCost(String brand) {
if(this.tvBrand.equalsIgnoreCase("Samsung")){
this.tvCost = 100*1.5;
}else if(this.tvBrand.equalsIgnoreCase("Sony")){
this.tvCost = 100*2.0;
}
}
public Integer getTvDimension() {
return tvDimension;
}
public void setTvDimension(Integer tvDimension) {
this.tvDimension = tvDimension;
}
public String getTvScreen() {
return tvScreen;
}
public void setTvScreen(String tvScreen) {
this.tvScreen = tvScreen;
}
@Override
public String toString() {
return "Telivision [tvBrand=" + tvBrand + ", tvCost=" + tvCost + ", tvDimension=" + tvDimension + ", tvScreen="
+ tvScreen + "]";
}

测试仪如下图

public class TelivisionTester {

public static void main(String[] args) {

Telivision telivision = new Telivision();
ArrayList<Telivision> telList = new ArrayList<Telivision>();
telivision.setTvBrand("SAMSUNG");
telivision.setTvDimension(40);
telivision.setTvScreen("Led");
telivision.setTvCost("Samsung");
telList.add(telivision);
System.out.println(telList);
System.out.println(telivision.getTvBrand()+"Cost is "+telivision.getTvCost());

telivision.setTvBrand("Sony");
telivision.setTvDimension(36);
telivision.setTvScreen("Led");
telivision.setTvCost("Sony");
telList.add(telivision);
System.out.println(telList);
System.out.println(telivision.getTvBrand()+"Cost is "+telivision.getTvCost());
}

预期的输出如下所示

[Telivision [tvBrand=SAMSUNG, tvCost=150.0, tvDimension=40, tvScreen=Led],
Telivision [tvBrand=Sony, tvCost=200.0, tvDimension=36, tvScreen=Led]]

但观察到的输出如下所示

[Telivision [tvBrand=Sony, tvCost=200.0, tvDimension=36, tvScreen=Led], 
Telivision [tvBrand=Sony, tvCost=200.0, tvDimension=36, tvScreen=Led]]

请让我知道我在这段代码中犯了什么错误

最佳答案

您的列表未被覆盖。您将添加该类的同一实例两次,而不是使用新属性创建一个新实例。由于原始实例已更改,因此列表中的两个条目将获得相同的属性。为添加到列表中的每台电视创建一个新的对象实例。

   public static void main(String[] args) {

Telivision telivision = new Telivision();
ArrayList<Telivision> telList = new ArrayList<Telivision>();
telivision.setTvBrand("SAMSUNG");
telivision.setTvDimension(40);
telivision.setTvScreen("Led");
telivision.setTvCost("Samsung");
telList.add(telivision);
System.out.println(telList);
System.out.println(telivision.getTvBrand()+"Cost is "+telivision.getTvCost());
Telivision secondTelivision = new Telivision();
secondTelivision.setTvBrand("Sony");
secondTelivision.setTvDimension(36);
secondTelivision.setTvScreen("Led");
secondTelivision.setTvCost("Sony");
telList.add(secondTelivision);
System.out.println(telList);


}

关于java - Arraylist 输出被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57364450/

25 4 0