30/09/2018, 21:01

Đọc mảng các đối tượng

mình có bài như sau:
Viết chương trình nhập n bản ghi và lưu vào một tệp với đường dẫn nhâp từ bàn phím(VD: E:sinhvien.dat); Trong đó mỗi bản ghi là 1 bộ dữ liệu sinh viên gồm: Mã SV, Tên, Điểm tổng kết. In toàn bộ dữ liệu của tệp ra màn hình.
Đây là code mình làm:

package FILE;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Scanner;

public class objectFile2 {
	public static void main(String[] args) {
		student s1 = new student();
		s1.input();
		s1.show();
	}
}

class student implements Serializable {
	private String id;
	private String name;
	private float score;
	private ArrayList<student> liststudent;
	private ArrayList<student> liststudent2;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public float getScore() {
		return score;
	}

	public void setScore(float score) {
		this.score = score;
	}

	public void input() {
		Scanner inp = new Scanner(System.in);
		int n;
		String id2;
		String name2;
		float score2;
		String pathOut;
		liststudent = new ArrayList();
		System.out.println("Nhap so sinh vien can luu vao file ");
		n = inp.nextInt();
		inp.nextLine();
		for (int i = 0; i < n; i++) {
			student s = new student();
			System.out.println("Nhap thong tin sinh vien thu " + (i + 1));
			System.out.println("Nhap ma sinh vien: ");
			id2 = inp.nextLine();
			s.setId(id2);

			System.out.println("Nhap ten sinh vien: ");
			name2 = inp.nextLine();
			s.setName(name2);

			do {
				System.out.println("Nhap diem tong ket sinh vien: ");
				score2 = inp.nextFloat();
				s.setScore(score2);
				inp.nextLine();
				if (score2 < 0 && score2 > 10) {
					System.out
							.println("Diem tong ket khong hop le, xin nhap lai !");
				}
			} while (score2 < 0 && score2 > 10);

			liststudent.add(s);
		}
		System.out.println("Nhap duong dan file muon luu danh sach sinh vien ");
		pathOut = inp.nextLine();
		try {
			FileOutputStream fout = new FileOutputStream(pathOut);
			ObjectOutputStream oout = new ObjectOutputStream(fout);
			oout.writeObject(liststudent);
			oout.close();
			fout.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			System.out.println("Co loi xay ra !");
		}
	}

	public void show() {
		Scanner inp = new Scanner(System.in);
		System.out.println("Nhap duong dan file muon lay danh sach sinh vien: ");
		String pathIn = inp.nextLine();
		try {
			FileInputStream fin = new FileInputStream(pathIn);
			ObjectInputStream oin = new ObjectInputStream(fin);
			liststudent2 = new ArrayList();
			liststudent2 = (ArrayList<student>) oin.readObject();
			for (int i = 0; i < liststudent2.size(); i++) {
				student st = new student();
				st = (student) liststudent2.get(i);
				System.out.println("	SINH VIEN THU "+(i+1));
				System.out.println("MA SINH VIEN: ");
				st.getId();
				System.out.println("TEN SINH VIEN: ");
				st.getName();
				System.out.println("DIEM TONG KET: ");
				st.getScore();
				oin.close();
				fin.close();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			System.out.println("Co loi xay ra !");
		} catch (ClassNotFoundException e) {
			System.out.println("Khong tim thay mang doi tuong ");
		}

	}

}

tuy nhiên khi chạy đến bước in dữ liệu ra màn hình thì trắng trơn, không biết mình sai ở đâu

Tam Van Le viết 23:11 ngày 30/09/2018

Bạn chỉ mới thực hiện hành động get dữ liệu từ 1 object thôi, chưa có in ra màn hình,
Ở dòng for in dữ liệu, bạn có thể tham khảo code sau:
System.out.println("MA SINH VIEN: " + st.getId());
OR
System.out.println(String.Format(“MA SINH VIEN: {0}”, st.getId());

Bài liên quan
0