0

休息几年后才回到Java。我正在尝试从一个数组中选择元素并将它们存储在另一个 Java 中。我创建了一个具有固定数量元素的相同类型的新数组。我要复制的数组不是空的,我已经打印出来了。但是当我尝试显示新数组时,值不存在 - 只是对元素的引用。我可能忽略了一些东西。我一直在寻找最后一天,但没有得到任何地方。我真的很感激一些帮助。下面的代码:

PersonDetails user = new PersonDetails(userName,userGender,userAge,userInterests);
PersonDetails [] userArray =  new PersonDetails [numberOfDaters];   
PersonDetails [] dateArray =  new PersonDetails [numberOfDaters];   
userArray = user.getArray("datingdata.txt", numberOfDaters);
dateArray = Arrays.copyOf(userArray, userArray.length);

char [][] interestArray = new char[numberOfDaters][5];  
for (int z =0;z<userArray.length; z++) {                
   interestArray[z] =
      userArray[z].getAllInterests( userArray[z].getInterests());                   
}
String remove = user.getOnes(interestArray);
System.out.print(remove);
StringTokenizer st = new StringTokenizer(remove); 
int num = st.countTokens();
PersonDetails [] userRemoveArray =  new PersonDetails [num]; 
while(st.hasMoreTokens()) {
   int token = Integer.parseInt(st.nextToken()); 
   for(int x =0;x<userRemoveArray.length;x++) {
      userRemoveArray[x] = userArray[token];
   }
   System.out.println(userRemoveArray);  
} 

输出如下:

[LPersonDetails;@a8c488
[LPersonDetails;@a8c488
[LPersonDetails;@a8c488
[LPersonDetails;@a8c488
[LPersonDetails;@a8c488
[LPersonDetails;@a8c488
[LPersonDetails;@a8c488
[LPersonDetails;@a8c488
[LPersonDetails;@a8c488
[LPersonDetails;@a8c488
[LPersonDetails;@a8c488

提前致谢

4

3 回答 3

0

这是一个让您更轻松的小示例,因为您已经注意到您在一段时间后才回到 Java,我希望这对您有所帮助:)

public class PersonDetails {

private String userName;

private String gender;

@Override
public String toString() {
    return "PersonDetails [userName=" + userName + ", gender=" + gender
            + "]";
}

}

现在,当您打印出数组时,在 toString() 方法中创建的字符串将为每个 PersonDetail 对象打印。

于 2012-11-18T17:09:44.390 回答
0

您可以使用此处.addAll(...)找到的方法或众多方法之一。

至于打印出数组的元素......您必须实现自己的.toString()方法以避免显示对象引用。

于 2012-11-18T16:34:16.380 回答
0

你应该使用System.out.println(Arrays.asList(userRemoveArray));. 或者

for(int i = 0; i < userRemoveArray.length;i++) {
  System.out.print(userRemoveArray[i]+", ");
}
System.out.println();
于 2012-11-18T17:13:23.273 回答