我正在用Netbeans编写一个程序,今天我意识到它并没有按我希望的那样工作。该程序的想法是采用用户输入的内容,使用数据创建一个对象,然后将该对象存储在数组中。按下按钮时会发生这种情况。当按下另一个按钮时,数组的内容显示在jTextArea上。我现在意识到的问题是,添加到数组的对象在添加另一个对象时被删除,我不知道为什么。这是我用于创建对象的class: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时,将使用Car和txtfBrand中的值创建一个txtfYear并将其存储在索引0的carArray中。然后将数组carArray增加为两个 -objects big,然后创建的下一个对象存储在索引2处,依此类推...或者,我认为代码可以正常工作...但是,当我按下Car按钮时,仅显示我创建的最后一个对象,这必须表示它只是read中的一个对象。当在carArray上打印carArray的大小时,该值始终为1。我不明白为什么会这样,任何帮助将不胜感激! 最佳答案 这是因为您要在add方法中将a设置为零。因此,该对象将放置在第一个索引处,从而删除之前存在的任何项目。将变量初始化移到方法之外应该可以解决此问题,从而确保精确的增量。int a = 0;int b = 1;Car[] carArray = new Car[b];private void btnAddActionPerformed(java.awt.event.ActionEvent evt) { carArray[a] = new Car (txtfBrand.getText(), txtfYear.getText()); a++; b++;}包括以下评论交流:还要注意数组的初始化。您正在创建大小为1的carArray(由于b = 1;),因此,如果尝试添加的元素多于空间,则可能会遇到ArrayIndexOutOfBounds异常。此外,添加每个新项目后,您似乎想将carArray增大。如果您想要一个可以改变大小的数组,建议您使用ArrayList。即使您更改b的值,carArray的长度也始终为1关于java - 为什么我的对象从数组中删除?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31709868/
10-13 09:48