728x90
성적클래스를 만들어 필드와 메소드를 지정하고 문제 1, 2를 풀어라..
문제1,.
클래스명 : SungJuk 필드 : name, kor, eng, math, tot, avg, grade 메소드 : 생성자 calc() - 총점, 평균, 학점 계산 getName() getKor() getEng() getMath() getTot() getAvg() getGrade() [실행결과] ---------------------------------------------------- 이름 국어 영어 수학 총점 평균 학점 ---------------------------------------------------- 홍길동 90 95 100 코난 100 89 75 또치 75 80 48 |
문제2
문제1에서 생성자로 값을 지정한거랑 달리 입력값을 받아서 출력해라.
SungJuk 클래스 이용하시오 객체 배열 [실행결과] 인원수 입력 : 2 이름 입력 : 홍길동 국어 입력 : 85 영어 입력 : 93 수학 입력 : 100 이름 입력 : 코난 국어 입력 : 75 영어 입력 : 86 수학 입력 : 92 ---------------------------------------------------- 이름 국어 영어 수학 총점 평균 학점 ---------------------------------------------------- 홍길동 85 93 100 코난 75 86 92 |
문제를 풀기위해 필요한 필드와 메소드를 선언한 클래스
package class_constructor;
import java.io.BufferedReader;
public class SungJuk {
private String name;
private char gread;
private int kor, eng, math, sum;
private double avg;
public String getName() {
return name;
}
public int getKor() {
return kor;
}
public int getEng() {
return eng;
}
public int getMath() {
return math;
}
public int getSum() {
return sum;
}
public double getAvg() {
return avg;
}
public char getGread() {
return gread;
}
public SungJuk(String name, int kor, int eng, int math) {
this.name = name;
this.kor = kor;
this.eng = eng;
this.math = math;
}
public void calc() {
sum = kor + eng + math;
avg = (double) sum / 3;
if (avg >= 90) {
gread = 'A';
} else if (avg >= 80) {
gread = 'B';
} else if (avg >= 70) {
gread = 'C';
} else if (avg >= 60) {
gread = 'D';
} else {
gread = 'F';
}
}
}
문제1
package class_constructor;
public class SungJukMain {
public static void main(String[] args) {
SungJuk[] s= new SungJuk[3];
//SungJuk클래스만 저장할 수 있는 배열 3칸을 만든것
s[0] = new SungJuk("가", 80, 90, 100);
s[1] = new SungJuk("나", 95, 88, 75);
s[2] = new SungJuk("다", 65, 76, 88);
//3개의 객체는 sunjuk클래스에 파라미터를 받는 값을 저장할 수 있는 메소드를 만들었기 때문에
//이렇게 저장이 가능하다.
//입력값으로 받을려면 파라미터가 없는 메소드를 만들어야 한다.
System.out.println("이름\t국어\t영어\t수학\t총점\t평균\t학점");
for(int i=0; i<3; i++) {
s[i].calc();
System.out.printf("%s\t%d\t%d\t%d\t%d\t%.2f\t%s\n"
,s[i].getName(),s[i].getKor(),s[i].getEng(),s[i].getMath(),s[i].getSum(),s[i].getAvg(),s[i].getGread());
}
}
}
이름 국어 영어 수학 총점 평균 학점 가 80 90 100 270 90.00 A 나 95 88 75 258 86.00 B 다 65 76 88 229 76.33 C |
문제2
package class_constructor;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class SungJukMain02 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String name;
int kor, eng, math, sum;
double avg;
System.out.print("인원수 입력 : ");
int userInput = Integer.parseInt(br.readLine());
SungJuk[] s = new SungJuk[userInput];
//sungjuk 클래스를 속성으로 한 객체를 담을 수 있는 배열 생성
for (int i = 0; i < userInput; i++) {
System.out.print("이름입력: ");
name = br.readLine();
System.out.print("국어점수: ");
kor = Integer.parseInt(br.readLine());
System.out.print("영어점수: ");
eng = Integer.parseInt(br.readLine());
System.out.print("수학점수: ");
math = Integer.parseInt(br.readLine());
System.out.println();
s[i] = new SungJuk(name, kor, eng, math);
//성적 클래스에 이 정보를 저장할 수 있는 메소드를 미리 만들어놨기 때문에
//저장가능.
s[i].calc();
//s[i]하나가 클래스하나의 정보. 그래서 이름, 국,영,수, 총점, 평균의 값을 다 저장할 수 있음
//그래서 클래스에 원하는 값을 저장할 수 있는 필드, 메소드를 만들어야 한다.
}
System.out.println("-----------------------------------------------------");
System.out.println("이름\t국어\t영어\t수학\t총점\t평균\t학점");
System.out.println("----------------------------------------------------");
// for (int i = 0; i < userInput; i++) {
// System.out.printf("%s\t%d\t%d\t%d\t%d\t%.2f\t%s\n"
// ,s[i].getName(),s[i].getKor(),s[i].getEng(),s[i].getMath(),s[i].getSum(),s[i].getAvg(),s[i].getGread());
//
// }
for(SungJuk data : s) {
System.out.printf("%s\t%d\t%d\t%d\t%d\t%.2f\t%s\n"
,data.getName(),data.getKor(),data.getEng(),data.getMath(),data.getSum(),data.getAvg(),data.getGread());
}
}
}
인원수 입력 : 2 이름입력: 가 국어점수: 86 영어점수: 75 수학점수: 87 이름입력: 나 국어점수: 88 영어점수: 98 수학점수: 97 ----------------------------------------------------- 이름 국어 영어 수학 총점 평균 학점 ---------------------------------------------------- 가 86 75 87 248 82.67 B 나 88 98 97 283 94.33 A |
일단 입력받을 값을 저장해줄 이름,국어,영어등 필요한 필드를 만들어준다.
입력할 인원수 만큼 배열을 만들면되기 때문에 입력받는 변수 userInput을 배열의 크기로 설정한다.
배열을 생성한 후 for문을 이용해 입력값을 받고
마지막에 s[i] =~ 를 통해 배열을 저장한다.
배열은 같은 타입의 값들이 모인 것인데 지금은 이름,점수등 다양한 타입을 한번에 저장해야 한다.
그래서 타입을 가진 값이 아닌 클래스를 하나의 배열값으로 저장하는 방법을 사용한다.
먼저 필요한 필드와 메서드를 선언한 SungJuk클래스를만든 후
SungJuk[] s = new SungJuk[]; 이란 코드를 통해
SungJuk의 속성을 같는 s을 생성했다. 이 클래스에는 다양한 타입의 값을 받을 수 있도록 필드와 메서드를 선언했기 때문에 클래스자체를 배열로 저장할 수 있게 된다.
그래서 s[i]에는 이름, 국어,영어,수학 점수, 총점, 평균, 학점의 정보가 들어가있다.
그리고 s[i].clac() 라는 코드를 통해 총점과 평균을 구할 수 있따.
728x90
'JAVA' 카테고리의 다른 글
객체 타입 확인 instanceOf()메소드, indexOf()응용문제 (0) | 2020.09.29 |
---|---|
Import Static (0) | 2020.09.28 |
상속 (0) | 2020.09.24 |
ArrayList (0) | 2020.09.21 |
set, get 메소드를 사용하는 이유 (0) | 2020.09.17 |