所以我在同一个类中都有以下代码
List<Person> peopleList = new ArrayList<Person>();
private void viewPersons() {
if (peopleList.isEmpty()) {
System.out.println("No persons to display");
}
if (peopleList.isEmpty()!= true) {
//for(int i = 0; i <= peopleList.size(); i++) {
System.out.println(peopleList);
//}
}
}
还有另一个名为Person的类,该数组持有对它的引用。
我从用户输入获取值,这不重要或问题,但是当这个方法运行时(比如我有Jon,4110987654和jjon@gmail.com作为三个字符串的用户输入)我得到
“[Person @ 55f96302 Jon,4110987654,jjon @ gmail.com]作为输出。”
如果我输入了另一个人的信息,我会在一行中得到所有信息。它看起来像
“[Person @ 55f96302 Jon,4110987654,jjon @ gmail.com,Person @ 3d4eac69, 姓名,电话,电子邮件]“
但我想要的是
“Person @ 55f96302 Jon,4110987654,jjon @ gmail.com
Person @ 3d4eac69,姓名,电话,电子邮件“
如何将每个人的信息分开,"Person@55f96302"
只是一个数字,例如1或2?
我只是不确定应该添加什么语法或应该更改什么。
这是Person类
中的toString()public String toString(){
StringBuilder builder = new StringBuilder();
builder.append(super.toString()).append(" ");
builder.append(fullName).append(", ");
builder.append(phoneNumber).append(", ");
builder.append(email).append(" ");
return builder.toString();
}
答案 0 :(得分:3)
您获得了上面提到的输出,因为您试图直接打印ArrayList
,其中包含Person
个toString()
没有任何功能的对象。试试这段代码:
List<Person> peopleList = new ArrayList<Person>();
private void viewPersons() {
if (peopleList.isEmpty()) {
System.out.println("No persons to display");
} else {
for (Person p : peopleList) {
// you can override Person.toString() however you want
System.out.println(p.toString());
}
}
}
答案 1 :(得分:0)
您可以覆盖java.lang.Objects类toString()方法以格式化列表输出。
答案 2 :(得分:0)
您可以按照预期的方式进行打印。
你可以像Tim Biegeleisen在他的回答中提到的那样进行迭代。这个很简单。如果你打算只在这个地方打印,而不是代码中的任何其他地方。
如果您在多个地方需要这种类似的打印需求,那么您必须覆盖ArrayList的toString()方法。
答案 3 :(得分:0)
peopleList是arraylist。 以您提到的格式打印arraylist的内容 您必须使用每个循环和toString()方法。 toString()方法来自您需要覆盖的对象类。 您可以使用下面的修改代码
List<Person> peopleList = new ArrayList<Person>();
private void viewPersons() {
if (peopleList.isEmpty()) {
System.out.println("No persons to display");
}
else{
//use of for each loop
for(Person per : peopleList){
//override toString() method
System.out.println(per.toString());
}
}
}