package ch05;
public class Student {
//학번
int studentId;
//학생이름
String name;
//참조타입으로 맴버변수만들기
Subject korea;
Subject math; //대문자로 시작하는 클래스타입
//서브젝트를 메모리화 시키지않아서 없는 녀석이라 nullpoint가 떳다
//해결책 메모리를 올려라 -1
public Student(int studentId, String name) {
this.studentId = studentId;
this.name = name;
korea = new Subject(); // -1
math = new Subject();
//생성자가 제일 먼저 작동이되기때문에 메모리를 만들어줌 korea math
}
// //국어 성적
// int koreanScore;
// //수학 성적
// int mathScore;
// //수강하는 과목 이름 1
// String korean;
// //수강하는 과목 이름 2
// String math;
//국어 성적 세팅
public void setKoreaSubject(String name, int score) {
korea.subjectName = name;
korea.score = score;
// .연산자는 객체
}
public void setMathSubject(String name, int score) {
math.subjectName = name;
math.score = score;
}
public void showStudentScore() {
int total = korea.score + math.score;
System.out.println("학생의 이름은 : " + name);
System.out.println("학생의 총점은 : " + total);
System.out.println("학생의 평균은 : " + (total/2));
}
}
package ch05;
public class Subject {
String subjectName;
int score;
int subjectId;
}
package ch05;
public class StudentTest {
public static void main(String[] args) {
Student studentLee = new Student(10,"Lee");
studentLee.setKoreaSubject("국어", 100);
studentLee.setMathSubject("수학", 80);
//error
studentLee.showStudentScore();
//Exception in thread "main" java.lang.NullPointerException: Cannot assign field "subjectName" because "this.korea" is null
// at ch05.Student.setKoreaSubject(Student.java:28)
// at ch05.StudentTest.main
// (StudentTest.java:8)
// 객체가 생성되지않았는데 객체를 만들어라
// 인스턴스에 주소값을 생성되지않았는데 어디에있는 것을 해결하라
//문제 1 학생 studentKim 생성
//국어 셋팅
//수학 셋팅
//총점 출력
Student studentKim = new Student(20,"Kim");
studentKim.setKoreaSubject("국어", 90);
studentKim.setMathSubject("수학", 70);
studentKim.showStudentScore();
}
}
'Java > chapter2' 카테고리의 다른 글
ch06 Car (0) | 2021.08.25 |
---|---|
ch05 별모양 역으로 5->1 (0) | 2021.08.25 |
ch04 Student Bus Subway (0) | 2021.08.25 |
ch03 UserInfo(생성자) (0) | 2021.08.25 |
ch03 Person (0) | 2021.08.25 |