gpt4 book ai didi

java - 为什么我的对象从数组中删除?

转载 作者:行者123 更新时间:2023-12-01 22:11:41 24 4
gpt4 key购买 nike

我正在 Netbeans 中编写一个程序,今天我意识到它没有按照我想要的方式工作。该程序的想法是获取用户输入的内容,用数据创建一个对象,然后将该对象存储在数组中。按下按钮时会发生这种情况。当按下另一个按钮时,数组的内容将显示在 jTextArea 上。我现在意识到,这个问题是,添加到数组中的对象在添加另一个对象时被删除,我不明白为什么。

这是我用于创建对象的:

public class Car {
public String brand;
public String year;

public Car (String brand, String year) {
this.brand = brand;
this.year = year;
}

}

这是代码:

int b = 1;
Car[] carArray = new Car[b];

private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int a = 0;

carArray[a] = new Car (txtfBrand.getText(), txtfYear.getText());
a++;
b++;
}

private void btnReadActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
for (int i = 0; i < carArray.length; i++) {
txtaRead.append("" + carArray[i].Brand + "\n" + carArray[i].Year + "\n\n");
lblSize.setText("" + carArray.length);
}
}

上面的代码的作用是创建一个数组 carArray,它是一个 Car 对象。当用户按下按钮 btn 时,将使用 txtfBrandtxtfYear 中的值创建 Car 并将其存储在索引 0 上的 carArray。然后,数组 carArray 增加到两个 Car 对象大,并存储创建的下一个对象在索引 2 等等...或者我认为代码有效...

但是当我按下read按钮时,只显示我创建的最后一个对象,这一定意味着它只是carArray中的一个对象。当在 lblSize 上打印出 carArray 的大小时,它始终为 1。我不明白为什么会发生这种情况,如果有任何帮助,我们将不胜感激!

最佳答案

问题是

int b = 1;
Car[] carArray = new Car[b];

当您在 new Car[b] 中给出 b 时,您是在说 java 创建一个大小为 b 的数组,即 1。这就是为什么数组大小始终为 1 的原因。

即使您正在执行b++,它也不会向数组添加额外的空间,因为您的数组已经创建。所以它的大小始终是 1

此外,每次您将 0th 索引处的值替换为(这不是故意的(我猜),但对于大小为 1 的数组来说是正确的):

int a = 0;
carArray[a] = new Car (txtfBrand.getText(), txtfYear.getText());

当你不知道要插入多少个元素时,你应该使用ArrayListLinkedList .

关于java - 为什么我的对象从数组中删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31709868/

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