[英]Problems printing ArrayList in Java
我必須制作電話簿進行練習,我需要使用 ArrayList 來完成,我在菜單中添加了注冊用戶的選項,但是在打印這些用戶時,它給了我類似的信息: [Contact@68e09d7b, Contact@51da2082]
我在 Stack Overflow 上進行了研究,看到了和我有類似問題的人,在答案中,人們告訴他們在主 class 中使用Override toString() 方法,但是當我嘗試這樣做時,我的代碼返回了兩個列表在一個列表中。
Output:
[Jon, 99999-9999, jon@gmail.com, 01/01/2000, Tom, 99999-9998, tom@gmail.com, 02/01/2000]
預期的:
[Jon, 99999-9999, jon@gmail.com, 01/01/2000]
[Tom, 99999-9998, tom@gmail.com, 02/01/2000]
這是我用來制作程序的兩個類。
聯系方式.class
public class Contato {
// Atributos da classe Contato
private String id;
private String nome;
private String telefone;
private String email;
private String aniversario;
public String getID() {
return id;
}
public void setID(String id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAniversario() {
return aniversario;
}
public void setAniversario(String aniversario) {
this.aniversario = aniversario;
}
public Contato(String nome, String telefone) {
this.id = id;
this.nome = nome;
this.telefone = telefone;
this.email = "Email not entered";
this.aniversario = "Birthday date not entered";
}
@Override
public String toString() {
return nome + ", " + telefone + ", " + email + ", " + aniversario;
}
}
主.class
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Arrays;
public class Main{
public static void main(String args[]){
Scanner entrada = new Scanner(System.in);
String id, nome, telefone, email, aniversario;
ArrayList<Contato> contatos = new ArrayList<>();
Agenda agenda = new Agenda();
while(true){
System.out.println("\n1. Register New Contact");
System.out.println("2. Search Contact");
System.out.println("3. Delete Contact");
System.out.println("4. Exit");
System.out.print("Your choice: ");
int opcao = Integer.parseInt(entrada.nextLine());
switch(opcao){
case 1:
System.out.print("Name: ");
nome = entrada.nextLine();
System.out.print("Phone number: ");
telefone = entrada.nextLine();
Contato novoContato = new Contato(nome, telefone);
System.out.print("E-mail: ");
email = entrada.nextLine();
novoContato.setEmail(email);
System.out.print("Birthday date: ");
aniversario = entrada.nextLine();
novoContato.setAniversario(aniversario);
contatos.add(novoContato);
break;
case 2:
System.out.println(contatos);
break;
}
}
}
}
不要嘗試打印列表,而是分別依次打印每個聯系人
for (Contato contato : contatos) {
System.out.println("[" + contato + "]");
}
你也可以使用類似StringJoiner
的東西,例如......
StringJoiner sj = new StringJoiner("\n");
for (Contato contato : contatos) {
sj.add(contato.toString());
}
System.out.println(sj);
雖然,為了性能,我可能會堅持只循環列表
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.