30/09/2018, 18:16
Đâu là lỗi sai của mình trong đoạn code này?
Trên là Diagram của bài đó
package tuan05;
public class Faculty {
private String facultyID;
private String lastName;
private String firstName;
private String office;
public Faculty(String facultyID, String lastName, String firstName, String office) {
super();
this.facultyID = facultyID;
this.lastName = lastName;
this.firstName = firstName;
this.office = office;
}
public Faculty(){
this("0","0","0","0");
}
public String getFacultyID() {
return facultyID;
}
public void setFacultyID(String facultyID) {
this.facultyID = facultyID;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getOffice() {
return office;
}
public void setOffice(String office) {
this.office = office;
}
@Override
public String toString() {
return String.format("%10s
%10s
%10s
%10s
",facultyID,lastName,firstName,office);
}
}
Class
package tuan05;
public class Section{
private String sectionNbr;
private String semester;
private String room;
private static Faculty teacher;
public Section(String sectionNbr, String semester, String room,Faculty teacher) {
super();
this.sectionNbr = sectionNbr;
this.semester = semester;
this.room = room;
Section.teacher = teacher;
}
public Section(){
this("0","0","0",teacher);
}
public String getSectionNbr() {
return sectionNbr;
}
public void setSectionNbr(String sectionNbr) {
this.sectionNbr = sectionNbr;
}
public String getSemester() {
return semester;
}
public void setSemester(String semester) {
this.semester = semester;
}
public String getRoom() {
return room;
}
public void setRoom(String room) {
this.room = room;
}
@Override
public String toString() {
return "Mã học phần: " + sectionNbr + "
Học kỳ: " + semester + "
Phòng học: "
+ room + "
Giảng viên: " + teacher.getLastName() + " " + teacher.getFirstName()
+ "(Khoa: " + teacher.getOffice() + ")";
}
}
Class
package tuan05;
public class Course {
private String courseNbr;
private String courseTitle;
private int credits;
private Section[] sections;
private int i=0;
public Course(){
this("0","0",0);
}
public Course(String courseNbr, String courseTitle, int credits) {
super();
this.courseNbr = courseNbr;
this.courseTitle = courseTitle;
this.credits = credits;
sections = new Section[5];
}
public String getCourseNbr() {
return courseNbr;
}
public void setCourseNbr(String courseNbr) {
this.courseNbr = courseNbr;
}
public String getCourseTitle() {
return courseTitle;
}
public void setCourseTitle(String courseTitle) {
this.courseTitle = courseTitle;
}
public int getCredits() {
return credits;
}
public void setCredits(int credits) {
this.credits = credits;
}
public void addSection(String SectionNbr, String semester, String room, Faculty listFa){
Section st = new Section(SectionNbr,semester,room,listFa);
sections[i]=st;
i++;
}
public void displayAll(){
for(Section sec : sections){
if(sec==null)
break;
System.out.println(sec + "
");
}
}
@Override
public String toString() {
return "Khóa học: [" + courseNbr + " - " + courseTitle + " (" + credits + "TC)]
" ;
}
}
Class
package tuan05;
public class Driver {
public static void main(String[] args) {
Faculty f1 = new Faculty("11111","Lê Kim","Khánh","CNTT");
Faculty f2 = new Faculty("22222","Nguyễn Thành","Danh","CNTT");
Course cs = new Course("THVP","Tin học văn phòng",4);
System.out.println(cs);
cs.addSection("120151","I - 2015", "H5.02",f1);
System.out.println("=========================================");
cs.addSection("220151","II - 2015", "B4.01",f2);
cs.displayAll();
}
}
Mình có thử chuyển Faculty sang kiểu mảng nhưng mà chuyển xong thì tè le đủ kiểu lại còn chạy không được >_<
Bài liên quan
khúc bạn chuyển Faculty đâu ? Đưa code lên đây và đưa thông báo lỗi lên luôn.
Không có lỗi gì bạn. Chỉ là đáng ra ở phòng học H5.02 thì Giảng viên là tên “Lê Kim Khánh” chứ không phải “Nguyễn Thành Danh” còn code thì mình đưa ở trên hết rùi mà bạn.
coi lại công dụng của “static” trong java.
Nhớ không lầm thì để static vào biến nào đó thì nó là biến toàn cục của class.
Nên khúc sau thay đổi biến teacher làm thay đổi luôn giá trị gán ban đầu.
Hình như diễn đàn mình có nói về từ khóa static này.
Bạn dùng công cụ tìm kiếm. Tìm với từ khóa static là ra.
Sau khi xóa Static thì chạy được nhưng mà chương trình lại báo lỗi.
do cái biến teacher, bạn không khai báo rõ ràng nên trình biên dịch không hiểu.
có thể đổi lại
đã thử nhưng không được bạn ơi
xin lỗi mình hướng dẫn sai.
2 object thì không thể dùng dấu = để gán giá trị cho nhau được.
Nên bạn cần viết 1 hàm để copy giá trị thuộc tính của lớp đó.
Nếu dùng Section.teacher thì nó bắt đổi Faculty cho Static, mà đổi cho Static thì sẽ không chạy được theo yêu cầu đề bài @@
mình code sai chỗ đó
Đổi lại