gpt4 book ai didi

java - 使用 for 循环将对象添加到数组时,最后添加的对象将用于所有实例

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

我一直在尝试使用 for 循环将驱动程序实例添加到驱动程序数组中。每个驱动程序都有 3 个通过 for 循环收集的基本变量。当循环运行时,最后一个驱动程序的详细信息将存储在数组的所有索引中!我想要获取它,以便我可以将每个单独的驱动程序添加到数组中。

public static void addDriver(Driver[] d) {      //method using for loop to add drivers


for(int i = 0; i < d.length; i++ ) {


String name, DOB, occupation;

System.out.println("Please Enter Driver Name");
name = kb.nextLine();

System.out.println("Please Select Driver Occupation");
System.out.println("1: Chauffeur" + "\n2: Accountant");
int choice = kb.nextInt();
kb.nextLine();

if (choice == 1) {
occupation = "Chauffeur";
} else {
occupation = "Accountant";
}

System.out.println("Please Enter Driver D.O.B");
DOB = kb.nextLine();

d[i] = new Driver(name, occupation, DOB);

}
}

非常感谢任何和所有帮助!

编辑...

这是主方法中的代码,我从一个名为 driverNum 的单独方法中获取数组的大小。

public static void main(String[] args) {

int drivers = driverNum(); //Setting size of the array

Driver[] d = new Driver[drivers]; //creating new array using number of drivers to be insured

addDriver(d); //calling method to add drivers to array

for(int x = 0; x < d.length; x++)
{
System.out.println(d[x].toString());
}

}

这是我一直在使用的驱动程序类...

public class Driver {

static String name, occupation, DOB;

public Driver()
{
name = "";
occupation = "";
DOB = "";
}

public Driver(String name, String occupation, String DOB)
{
this.name = name;
this.occupation = occupation;
this.DOB = DOB;
}

public void setName(String name)
{
this.name = name;
}

public String getName(Driver d)
{
return name;
}

public void setOccupation(String occupation)
{
this.occupation = occupation;
}

public String getOccupation()
{
return occupation;
}

public void setDOB(String DOB)
{
this.DOB = DOB;
}

public String getDOB()
{
return DOB;
}

public String toString()
{
String s;

s = "Name: " + name;
s = s + "\nOccupation: " + occupation;
s = s + "\nDOB: " + DOB;

return s;
}
}

我已经为此摸不着头脑有一段时间了,因为我认为这是正确的。感谢您迄今为止的帮助!

最佳答案

在您的 Driver 类中,您将三个全局变量 nameocupationD.O.B 定义为静态。这意味着每当您更改该变量的值时,程序中的所有都会发生变化,即使您创建该类的多个实例也是如此。只需取出静态声明即可解决您的问题。

关于java - 使用 for 循环将对象添加到数组时,最后添加的对象将用于所有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44810870/

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