gpt4 book ai didi

java - 字符串数组添加重复项

转载 作者:行者123 更新时间:2023-12-01 07:59:11 25 4
gpt4 key购买 nike

我尝试将项目添加到米数组中。每个项目都从 Meter.load(sc) 返回,它返回一个 Meter。当我尝试打印项目以检查输出时,第一个测试正确打印出所有项目,但第二个测试失败,仅显示最后一个重复的项目。由于这个问题,我无法从其他类调用 getMeterNumbers

有人可以帮我解决这个问题吗?谢谢。

public class CommercialAccount extends Account {

private Meter[] meters;

public CommercialAccount(AccountNumber accountNumber, Meter[] meters) {
this.accountNumber = accountNumber;
this.meters = meters;
}

public CommercialAccount(Scanner sc, AccountNumber accountNumber) {
this.accountNumber = accountNumber;
int n = sc.nextInt();
sc.nextLine();
meters = new Meter[n];
for (int i = 0; i < n; i++) {
meters[i] = Meter.load(sc);
System.out.println("Test 1: " + meters[i].toString());
}
for (int i = 0; i < meters.length; i++) {
System.out.println("Test 2: " + meters[i].toString());
}
}

public String toString() {
return accountNumber.toString() + " C " + meters.length;
}

public MeterNumber[] getMeterNumbers() {
MeterNumber[] ms = new MeterNumber[meters.length];
for (int i = 0; i < meters.length; i++) {
ms[i] = meters[i].getMeterNumber();
}
return ms;
}
}

控制台打印

Test 1: 356 926 850 
Test 1: 101 949 516
Test 1: 911 221 326
Test 1: 241 329 198
Test 1: 569 096 301
Test 1: 629 316 190
Test 1: 537 224 159
Test 2: 537 224 159
Test 2: 537 224 159
Test 2: 537 224 159
Test 2: 537 224 159
Test 2: 537 224 159
Test 2: 537 224 159
Test 2: 537 224 159

更新: 发现我的错误,我的 Meter 类中的所有属性都是静态的,所以这就是原因。谢谢大家。

最佳答案

您的问题有两个可能的原因:

  1. Meter.load(sc) 始终返回相同的 Meter 实例。这可以解释为什么数组中的所有元素都是相同的。
  2. Meter 类中的所有属性都是静态的,因此所有实例共享相同的值。

编辑:根据OP的评论,问题是将 Meter 类中的属性定义为静态。

关于java - 字符串数组添加重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26508137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com