簡體   English   中英

需要一種使用RandomAccessFile從ArrayList Store編寫Student的方法

[英]Need a way to write a Student from an ArrayList Store using RandomAccessFile

嘿我有問題。 我想使用一個arrayList來創建一個studentStore(我已經完成了這個),但是當我試圖用RandomAccessFile編寫學生時我一無所知。

StudentStore details = new StudentStore();
Student a = new Student("Becky O'Brien", "DKIT26", "0876126944", "bexo@hotmail.com");
Student b = new Student("Fabio Borini", "DKIT28", "0876136944", "fabioborini@gmail.com");
Student c = new Student("Gaston Ramirez", "DKIT29", "0419834501", "gramirez@webmail.com");
Student d = new Student("Luis Suarez", "DKIT7", "0868989878", "luissuarez@yahoo.com");
Student e = new Student("Andy Carroll", "DKIT9", "0853456788", "carroll123@hotmail.com");

這些是我的學生

現在我需要一種方法來寫它們

RandomAccessFile raf = new RandomAccessFile("employee.dat", "rw");
Student er = new Student(null, null, null, null);
for (int i = 0; i < details.length; i++) //This is getting an error obviously because details wont be taken.  nor will a, b,c , d or e which is what the student was declared at the top.
{
    er.setFirstName([i]);
    er.setLastName(lnames[i]);
    er.setAddress(addresses[i]);
    er.setAge(ages[i]);
    er.setSalary(salaries[i]);
    er.write(raf);
}
raf = new RandomAccessFile("employee.dat", "rw");

er = new Student();

int numRecords = (int) raf.length() / er.size();

for (int i = 0; i < numRecords; i++) {
    er.read(raf);

    System.out.print(er.getStudentName() + " ");
    System.out.print(er.getStudentId() + " ");
    System.out.print(er.getStudentEmail() + " ");
    System.out.print(er.getStudentTelephoneNumber() + " ");
}
raf.seek(0);
for (int i = 0; i < numRecords; i++) {
    er.read(raf);
    if (er.getAge() >= 55) {
        er.setSalary(0.0);
        raf.seek(raf.getFilePointer() - er.size());
        er.write(raf);
        raf.seek(raf.getFilePointer() - er.size());
        er.read(raf);
    }
    System.out.print(er.getStudentName() + " ");
    System.out.print(er.getStudentId() + " ");
    System.out.print(er.getStudentEmail() + " ");
    System.out.print(er.getStudentTelephoneNumber() + " ");
}

嘗試使用StudentStore來獲取內部ArrayList的大小。

public class StudentStore
{
    ArrayList<Student> students = null;

    public StudentStore()
    {
        students = new ArrayList<Student>();
    }

    public int size()
    {
        return (students == null) ? 0 : students.size();
    }
}

但是,我不明白,為什么你必須創建自己的包裝ArrayList而不是使用簡單的ArrayList ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM