У меня есть программа, которая считывает из файла, который содержит имена, фамилии и номера телефонов в этом формате: John Doe 123-456-7890PhoneBook класс не правильно держит запись объектов
Программа читает их как струны и вводит их в класс Entry, а затем добавляет объект Entry в PhoneBook. Существуют дополнительные функции печати. Прямо сейчас, когда я печатаю, он просто печатает последнюю запись 56 раз (в файле txt есть 56 «записей»). По какой-либо причине записи передаются правильно классу Entry, потому что я могу их правильно напечатать, но когда я добавляю их в PhoneBook и пытаюсь распечатать, он печатает только последнюю запись. Любая помощь была бы оценена по поводу того, как я это делаю. Благодаря!
main`
import java.util.Scanner;
import java.io.*;
public class main{
public static void main(String[] args) throws FileNotFoundException{
String firstName, lastName, fullName, phoneNumber;
Entry entry = new Entry();
PhoneBook phonebook = new PhoneBook();
File myFile = new File("C:\\Users\\Gregory\\Desktop\\Names_Numbers.txt");
Scanner infile = new Scanner(myFile);
//check if file exists
if (!myFile.exists()){
System.out.println("File not able to be found");
System.exit(0);
}
while (infile.hasNext()){
firstName=infile.next();
lastName=infile.next();
fullName=firstName+ " " + lastName;
phoneNumber=infile.next();
entry.setName(fullName);
entry.setPhoneNumber(phoneNumber);
phonebook.add(entry);
}
phonebook.print();
infile.close();
}
}`
запись Class`
public class Entry {
private String name;
private String phoneNumber;
public Entry() {
name = " ";
phoneNumber = " ";
}
public Entry(String n, String pN) {
name=n;
phoneNumber=pN;
}
public void setName(String fullName) {
name=fullName;
}
public void setPhoneNumber(String pN){
phoneNumber=pN;
}
public String getName() {
return name;
}
public String getPhoneNumber(){
return phoneNumber;
}
public void print(){
System.out.println(this.name + " " + this.phoneNumber);
}
}
`
PhoneBook Class`
public class PhoneBook {
private static final int CAPACITY = 100;
private Entry entry[]=new Entry[CAPACITY];
private int count; //holds current amount of entries in book
public PhoneBook(){
count=0; //set initial count value
}
public void add(Entry newEntry){
if (count > CAPACITY)
System.out.println("Maximum capacity reached, no more adds allowed");
entry[count]=newEntry;
count++;
}
public String find(String pN){
for (int i=0;i<count;i++) {
if (entry[i].getPhoneNumber()==pN)
return entry[i].getName();
}
String error="Name not found in phone book.";
return error;
}
public void print(){
for (int i=0; i<count;i++)
entry[i].print();
}
}`
Можете ли вы объяснить изменения, которые вы сделали? – DanM7
Причина в классе PhoneBook: ваш общедоступный метод void add (Entry newEntry) всегда добавляет один и тот же объект: entry [count] = newEntry; – smartmouse
Я знал, что это было что-то простое, спасибо, что указали! – user3587186