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
Bài liên quan
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());