前提・実現したいこと
CUIの初回起動では、情報入力を行い、それ以降は情報表示のみを行いたいです。
入力されたデータはpersonに格納し、ファイルに保存しています。
そして、情報表示の際は、ファイルからPersonに入れています。
発生している問題・エラーメッセージ
何回目の起動か判断する処理が分かりません。 他の方法として、オブジェクトが空かどうかで判断することは可能なのでしょうか?
該当のソースコード
java
1import java.io.Serializable; 2 3public class Employee implements Serializable { 4 private Person person; 5 private int employeeID; 6 7 public Employee(Person person, int employeeID) { 8 this.person = person; 9 this.employeeID = employeeID; 10 11 } 12 13 public int getEmployeeID() { 14 return this.employeeID; 15 } 16 17 public Person getPerson() { 18 return this.person; 19 } 20 21 public String toString() { 22 String str = person.getName() + "," + person.getAge()+ "," + employeeID; 23 return str; 24 } 25 26 public boolean equals(Object obj) { 27 if(obj instanceof Employee) { 28 Employee std = (Employee)obj; 29 if(this.employeeID == std.getEmployeeID()) { 30 return true; 31 } 32 } 33 return false; 34 } 35 36 public int hashCode() { 37 return getEmployeeID(); 38 } 39
import java.io.Serializable; class Person implements Serializable{ private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString() { String a = name + "," + age; return a; } public int hashCode() { return 0; } public boolean equals(Object obj) { if(this == obj) { return true; } else if(obj == null) { return false; } else if(this.getClass() != obj.getClass()) { return false; } else { Person other = (Person)obj; if(this.name.equals(other.name) && this.age == other.age) { return true; } else { return false; } } } }
import java.io.BufferedReader; import java.io.FileInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.io.BufferedOutputStream; import java.io.ObjectInputStream; import java.io.InputStreamReader; import java.io.FileNotFoundException; class Test { public static void main(String[] args) throws IOException{ BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); entry(input);//初回起動時のみの処理 display(); //2回目以降の起動の処理 } public static File file = new File("Data.txt"); public static void entry(BufferedReader input)throws IOException{ String name; int age; int employeeID; System.out.println("データを入力"); System.out.print("名前>"); name = input.readLine(); System.out.print("年齢>"); age = Integer.parseInt(input.readLine()); System.out.print("従業員ID>"); employeeID = Integer.parseInt(input.readLine()); Employee e1 = new Employee(new Person(name,age),employeeID); try(ObjectOutputStream data = new ObjectOutputStream(new FileOutputStream(file))) { data.writeObject(e1); } catch(IOException e) { e.printStackTrace(); } } public static void display(){ try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file))) { Employee e1 = (Employee) ois.readObject(); System.out.println(e1); }catch(IOException | ClassNotFoundException e) { e.printStackTrace(); } } }
試したこと
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー