アドレス帳として機能する GUI プログラムを作成する予定の CS のプロジェクトがあります。プログラムには、連絡先の追加、検索、および削除があります。プログラムは、連絡先の読み取り/保存もできると想定されています。連絡先の読み取りに問題があります。これがその部分のコードです。
PhoneDirectory Contacts = new PhoneDirectory(100);
private static final String DATA_FILE = "records.dat";
private static void readRecords() {
try {
FileInputStream fileIn = new FileInputStream(DATA_FILE);
try (ObjectInputStream in = new ObjectInputStream(fileIn)) {
Contacts = in.readObject();
}
}
catch (IOException | ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, "File does not exist or cannot be read.", "Error", JOptionPane.ERROR_MESSAGE);
}
}
ここでは、ユーザーが入力した情報を格納するオブジェクト「連絡先」を作成しました。の行で、Contacts = in.readObject();
の行にエラー メッセージが表示されますContacts = in.readObject();
。Contacts
オブジェクトではなく変数であるため、これを取得すると思います。
代わりに連絡先に何を持っているべきですか?
これがプロジェクトの残りのコードです。
メインクラス
package console;
public class Console {
public static void main(String[] args)
{
PhoneBookGUI frame = new PhoneBookGUI();
frame.setVisible(true);
}
}
電話帳
package console;
import javax.swing.JOptionPane;
public class PhoneDirectory {
private PhoneRecord[] records;
private int numRecords;
public PhoneDirectory(int size)
{
this.records = new PhoneRecord[size];
this.numRecords = 0;
}
public PhoneRecord[] getRecords() {
return records;
}
public int getNumRecords() {
return numRecords;
}
public void searchRecords(String inputName)
{
int j;
for (j=0; j<numRecords; j++) {
if (records[j].getName().contains(inputName)){
JOptionPane.showMessageDialog(null, "Name:" + " " + records[j].getName() + "\nNumber:" +" " + records[j].getNumber(), inputName, JOptionPane.INFORMATION_MESSAGE);
return;
}
}
}
public void deleteRecord(String contactName)
{
int i;
for (i=0; i <numRecords;i++) {
if (records[i].getName().equals(contactName)) {
records[i] = records[numRecords-1];
numRecords--;
}
}
}
public void updateRecord(String contactName, String phoneNumber)
{
int k;
for (k=0; k<numRecords;k++) {
if (records[k].getName().equals(contactName)) {
records[k].setNumber(phoneNumber);
break;
}
}
}
public void addRecord(PhoneRecord record)
{
if (numRecords < records.length) {
records [numRecords] = record;
numRecords++;
}
if (numRecords > records.length) {
PhoneRecord [] tempArray = new PhoneRecord [records.length*2];
for (int m=0; m<records.length; m++) {
tempArray[m] = records[m];
}
records = tempArray;
}
}
}
電話記録
package console;
// Represents a record containing a name and a phone number
class PhoneRecord {
private String name;
private String number;
// Constructor
public PhoneRecord(String personName, String phoneNumber) {
name = personName;
number = phoneNumber;
}
// Returns the name stored in the record
public String getName() {
return name;
}
// Returns the phone number stored in the record
public String getNumber() {
return number;
}
public void setNumber(String num) {
this.number = num;
}
}