【发布时间】:2013-08-04 08:30:00
【问题描述】:
注意:我将代码编辑为我认为人们试图告诉我的方式,但它仍然没有给我想要的输出。现在我的输出是“examples.search.Person@55acc1c2”,但是我多次输入新的名字和姓氏。至少它可以通过代码而不崩溃lol
我正在学习如何使用 ArrayLists,并且需要加载一个包含我创建的 Object 实例的 Array 列表。我知道如何使用数组执行此操作,但对于此任务,我需要使用 ArrayList 执行此操作。这是我需要做的一个例子。
// my "main" class
package examples.search;
import java.util.ArrayList;
import dmit104.Util;
public class MyPeople {
public static void main(String[] args) {
ArrayList<Person> people = new ArrayList<Person>();
Person tempPerson = new Person();
String firstName;
String lastName;
char choice = 'y';
int count = 1;
// fill my ArrayList
do {
people.add(tempPerson);
// I have a Util class that has a prompt method in it
firstName = Util.prompt("Enter First Name: ");
lastName = Util.prompt("Enter Last Name: ");
tempPerson.setFirstName(firstName);
tempPerson.setLastName(lastName);
count++;
choice = Util.prompt(
"Enter another person? [y or n]: ")
.toLowerCase().charAt(0);
} while (choice == 'y');
// display my list of people
for(int i = 0; i < people.size(); i += 1) {
System.out.print(people.get(i));
}
}
}
// my Person class which I am trying to build from
public class Person {
// instance variables
private String firstName;
private String lastName;
// default constructor
public Person() {
}
public String getFirstName(){
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
我已经尝试了很多方法,但无论如何我的 ArrayList 都没有填满。就像我提到的那样,我可以用数组做到这一点,或者即使我有一个加载的构造函数方法,但我没有。在我的实际任务中,我应该使用 set 方法来完成。
我到处找,找不到解决问题的方法,因为星期五我的教练不在。
非常感谢您
狮子座
【问题讨论】:
-
您的“默认构造函数”根本不是构造函数。类的构造函数必须与类同名。在这种情况下,构造函数必须命名为 Person()。顺便说一句,除非您非常需要可变类,否则您应该始终尝试将值对象实例化为不可变类型的实例。在您的情况下,lastname 和 firstname 应声明为
final并在 Person() 构造函数中设置为它们的初始值。 -
你说你知道如何为数组做这件事,好吧,这并没有什么不同,在创建
ArrayList`people之后,你没有对象,你必须创建它们并添加它们到列表中。 -
Oh ya scottb,它在我的课堂上说 Contact 应该是 Person。当我将代码粘贴到大声笑中时,我忘记了更改它。我实际上正在制作一个联系人管理器,我需要这样做,以便用户可以添加和删除联系人并能够更改它们(以防有人更改电子邮件、电话号码等)
-
谢谢 madth3,这就是问题所在,我不知道如何添加它们。我可以在数组列表中添加一个 int 或一个 stringn,但是添加我自己创建的新对象是我遇到问题的地方