Tôi đang sử dụng trình phân tích cú pháp SAX trên tệp XML để tạo các đối tượng tham chiếu lẫn nhau.
Vì vậy, tôi đã tạo một lớp và thêm sách giáo khoa cũng như các điều kiện tiên quyết vào các mảng tương ứng trong lớp đó và cuối cùng tôi đã thêm lớp đó vào một mảng. Sau khi phân tích cú pháp, người dùng sẽ được nhắc nhập số lớp và chương trình sẽ đưa ra thông tin bao gồm các điều kiện tiên quyết và mọi thứ họ yêu cầu, cũng như sách giáo khoa và các điều kiện tiên quyết của họ.
lớp công khai Khóa học {
số chuỗi riêng tư;
Khóa học riêng tư[] prereqs = Khóa học mới[5];
int riêng pCounter = 0;
Sách giáo khoa riêng[] sách = Sách giáo khoa mới[5];
int riêng tCounter = 0;
Khóa học công khai(Chuỗi n) {
số = n;
}
Chuỗi công khai getNumber() {
số trả lại;
}
public void addPrereq(Điều kiện tiên quyết của khóa học) {
điều kiện tiên quyết[pCounter++] = điều kiện tiên quyết;
}
public void addTextbook(Sách giáo khoa) {
sách[tCounter++] = sách;
}
Chuỗi công khai toString() {
Chuỗi retVal = "Khóa học: " + số + (tCounter == 0 ? ", Không có sách." : ", sách giáo khoa: ");
cho (int i = 0; i < tCounter; i++)
retVal += books[i].toString() + " ";
retVal += "\n" + (pCounter == 0 ? "Không có điều kiện tiên quyết.\n" : "Điều kiện tiên quyết:\n");
cho (int i = 0; i < pCounter; i++)
retVal += prereqs[i].toString();
return retVal + "Kết thúc khóa học " + number + ".\n";
}
}
Vấn đề là khi thêm một điều kiện tiên quyết, tôi xem xét mảng các lớp đã được tạo và nếu nó tồn tại thì sử dụng nó và nếu nó không tồn tại thì tạo một lớp mới. Vì vậy, nếu nó không tồn tại, tôi sẽ thêm một lớp không có thông tin nào khác ngoài một con số. Vì vậy, tôi đã kết thúc với lớp CSC455, lớp này có điều kiện tiên quyết là CSC365, nhưng không có sách giáo khoa hoặc điều kiện tiên quyết nào được liệt kê. Làm cách nào tôi có thể thực hiện việc này để các điều kiện tiên quyết trở thành lớp học đã hoàn thành?
Bạn cần phải duy trì Map
Tìm lớp học của bạn. Bất cứ khi nào bạn gặp một người mới Khóa học
hoặc tham khảo bạn kiểm tra bản đồ và nhập mới Khóa học
Nhập bản đồ. Bằng cách này bạn có thể tạo mộtKhóa học
từ yêu cầu và sau đó thêm thông tin sau.
我建议使用List
hoặcBộ
在你的 Khóa học
vào vì điều đó có nghĩa là bạn sẽ không nhận được MảngOutOfBounds
Khi bạn có nhiều hơn 5 cuốn sách giáo khoa.
lớp công khai Khóa học {
số chuỗi riêng tư;
Danh sách riêng prereqs = new LinkedList();
Danh sách riêng sách = new LinkedList();
Khóa học công khai(Chuỗi n) {
số = n;
}
Chuỗi công khai getNumber() {
số trả lại;
}
public void addPrereq(Điều kiện tiên quyết của khóa học) {
prereqs.add(prereq);
}
public void addTextbook(Sách giáo khoa) {
books.add(sách);
}
Chuỗi công khai toString() {
Chuỗi retVal = "Khóa học: " + số + (books.isEmpty() ? ", Không có sách." : ", sách giáo khoa: ");
for (cuốn sách giáo khoa cuối cùng : sách) {
retVal += book.toString() + " ";
}
retVal += "\n" + (prereqs.isEmpty() ? "Không có điều kiện tiên quyết.\n" : "Điều kiện tiên quyết:\n");
for (khóa học cuối cùng: điều kiện tiên quyết) {
retVal += Course.toString();
}
return retVal + "Kết thúc khóa học " + number + ".\n";
}
}
Bây giờ bạn cần lưu trữ Bản đồ
và thêm getCourse()
Phương thức bạn sử dụng thay vì xây dựng một lớp mới - đây là mẫu nhà máy:
lớp riêng CourseFactory {
Bản đồ cuối cùng riêng tư bản đồ khóa học;
public CourseFactory(final Map CourseMap) {
this.courseMap = CourseMap;
}
Khóa học công khai getCourse(tên chuỗi cuối cùng) {
Khóa học = CourseMap.get(name);
if(khóa học == null) {
khóa học = Khóa học mới (tên);
CourseMap.put(tên, khóa học);
}
khóa học trở lại;
}
}
Vì vậy, bây giờ trên đầu trình phân tích cú pháp, hãy tạo một Khóa họcNhà máy
và sử dụng nó để có được lớp học của bạn. Nó sẽ đảm bảo rằng bạn luôn tham khảo cùng một nội dung.
Tôi là một lập trình viên xuất sắc, rất giỏi!