Java OOP và File IO

Em chào mọi người, em có đang làm bài tập này nhưng bị lấn cấn ở 3 dấu chấm cuối cùng. Không biết có anh chị nào có thể gợi ý giúp em không.

  • Ở dấu chấm setInfo(), em có thể hiểu là nó trả về 1 array kiểu String. Dạng như này không ạ?

{

String a_info = toString();

String[] arr = a_info.split("\t");

return arr;
  • Tiếp theo là hai dấu chấm cuối cùng, hai dấm chấm này chính là thao tác trên File IO hay sao ạ? Do em chưa học phần này nhưng bài tập có mở rộng thêm nên em hơi chưa được hiểu lắm.

  • Thêm nữa là khi em tạo interface IO thì lúc em implements trong class Student nó đòi em phải đổi class Student thành abstract class, nhưng nếu vậy thì làm sao em gọi được đối tượng từ class abstract.

Em cảm ơn nhiều ạ

Đây là toàn bộ code của em:

package assignment7;


public class Student extends Person 
{ 
    private String m_major;
    
    public Student()
    {
        super();
        m_PersonType = PersonType.STUDENT;
        m_major = null;
    }
    
    public Student(int ID, String firstName, String lastName, String major)
    {
        super(PersonType.STUDENT, ID, firstName, lastName);
        m_major = major;
    }
    
    public String getMajor()
    {
        return m_major;
    }
    
    public String toString()
    {
        String result = super.toString();
        result += m_major + "\t";
        return result;
    }
    
    public boolean equals(Student s)
    {
        if(this.m_ID == s.m_ID && (this.firstName).equals(s.firstName) 
           && (this.m_lastName).equals(s.m_lastName) && (this.m_major).equals(s.m_major))
        {
            return true;
        }
        return false;
    }
    
    public String[] setInfo()
    {
        String a_info = toString();
        String[] arr = a_info.split("\t");
        return arr;
    }
    
    
}

Không biết khả năng tiếng Anh của bạn thế nào, nhưng mà đề bài đã nói rất rõ.

  • setInfo(): nhận vào là giá trị trả về của hàm toString() -> tách chuỗi này với phân tách là tab -> set value theo đúng thứ tự vào các field (thứ tự ở ý 3)
  • saveFile() loadFile() thực hiện thao tác trên file, bài này đơn giản chắc là dùng file text .txt thôi. Google “Java read write text file”
  • không hiểu bạn đang nói gì:
3 Likes

setInfo() thì em hiểu là

public void setInfo(String info)
{
info = info.split("\t");
}

Trong đó user sẽ tự gán info khi thực hiện bằng setInfo(Student_object.toString())
phải không ạ?

Hay ý anh em phải chuyển đầy đủ thành như vậy ạ?

   public void setInfo(String rawInfo)
    {
        String[] arr = rawInfo.split("\t");
        this.m_PersonType = PersonType.fromCode(arr[0].charAt(0));
        this.m_ID = Integer.parseInt(arr[1]);
        this.firstName = arr[2];
        this.m_lastName = arr[3];
        this.m_major = arr[4];
    }
1 Like

setInfo() should split … and put each value in its corresponding field of Student.

Quá rõ ràng, hàm này bạn phải thực hiện việc set các giá trị cho các field của Student, tên hàm là set info mà. Nếu bạn trả về giá trị là 1 array gồm các thông tin của Student thì hàm nên được đặt tên là parseInfo() hoặc processInfo() gì gì đó

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?