2014-09-20 7 views
1

У меня есть программа, которая считывает из файла, который содержит имена, фамилии и номера телефонов в этом формате: 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(); 
} 
}` 

ответ

0

В While Loop вашего основного класса:

 while (infile.hasNext()){ 
      firstName=infile.next(); 
      lastName=infile.next(); 
      fullName=firstName+ " " + lastName; 
      phoneNumber=infile.next(); 
      entry = new Entry(fullName, phoneNumber); 
      phonebook.add(entry); 
     } 
+0

Можете ли вы объяснить изменения, которые вы сделали? – DanM7

+0

Причина в классе PhoneBook: ваш общедоступный метод void add (Entry newEntry) всегда добавляет один и тот же объект: entry [count] = newEntry; – smartmouse

+0

Я знал, что это было что-то простое, спасибо, что указали! – user3587186

 Смежные вопросы

  • Нет связанных вопросов^_^