gpt4 book ai didi

java - 访问由字符串和数组组成的对象内的数组

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

我的程序有一个对象类Person。一个 Person 对象由一个字符串 name (这是一个人的名字)和一个 6 元素字符串数组 choices 组成。该数组保存用户输入的值,对 6 种不同的运动从最喜欢到最不喜欢进行排名。

例如,名为 testPerson 的 Person 对象可以由设置为 "Bob" 的字符串和每个元素如下的数组组成 {3,1 ,4,2,5,6}。 (列出的第二项运动是鲍勃最喜欢的运动,列出的最后一项运动是他最不喜欢的运动)。

可以使用以下代码创建该示例对象:

String[] tempArray = new String[]{"3","1","4","2","5","6"};
Person newPerson = Person("Bob",tempArray);

这是 Person 类:

public class Person{
private String[] choices = new String[6];
private String name;
//constructor
public Person(String myName, String[] myInput){
choices = myInput;
name = myName;
}
//returns the choices array
public String[] getChoices(){
return(choices);
}
//returns the name
public String getName(){
return(name);
}
}

每次新用户输入他们的姓名和选择时,我都会创建一个新对象。由于我不知道新用户会输入多少次详细信息,因此我将每个新对象存储在名为“people”的 ArrayList 中。 (是的,我知道...ArrayList 中对象内的数组)

在所有(未知数量)用户输入信息后,将按下一个按钮,表明没有更多用户可以输入信息。此时,我需要访问每个人对象的名称和选择数组为此,我显然会使用 for every 循环。我是这样设置的:

String[] myChoices = new String[6];
String myName;
for(Person getPerson: people){
myChoices = getPerson.getChoices();
myName = getPerson.getName();
//print name and choices
System.out.println(myName);
for(int i = 0; i < 6; i ++){
System.out.println(myChoices[i]);
}
}

“foreach”循环应该打印 6 元素数组的名称和每个元素,并且它将为添加到 people 的 ArrayList 中的每个对象执行此操作。换句话说,如果有 10 个人输入他们的名字和他们的选择,它会按照他们输入的顺序打印每个人的名字和他们的选择。

但是,当我运行代码时,它显示每个不同的名称,但在每个名称下显示仅属于最后一个输入选项的人的选项。例如,如果 Bob 输入 3,2,1,6,5,4 ;汤姆输入 1,3,5,2,4,6; Bill 输入 2,1,4,3,6,5,将显示以下内容:

鲍勃214365

汤姆214365

比尔214365

显然这是不对的。但我不明白为什么它正确显示每个名字,但它只显示每个人最近输入的选择。就好像 Person 类中的 getName() 方法返回每个对象各自的名称,但 getChoices() 方法返回最新的选择数组,而不是每个对象各自的选择数组。有人可以帮忙吗?如果我需要澄清任何事情,请告诉我。提前致谢!

最佳答案

在构造函数中使用以下代码。

 //constructor
public Person(String myName, String[] myInput){
String copy = new String[6];
System.arraycopy(myInput, 0, copy, 0, myInput.length);
choices = copy;
name = myName;
}

这一切都是由于您的对象引用而发生的。基本上,您使用相同的数组对象来初始化所有对象,这意味着如果原始对象发生更改,则所有Person中的数组对象对象发生变化。在上面的代码中,您将创建该数组的新副本,然后将该数组存储在您的 Person 对象中。

希望这有帮助。

关于java - 访问由字符串和数组组成的对象内的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30566081/

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