(Q) 이름, 학년, 국어점수, 영어점수, 수학점수에 사용자 입력을 받아 1명의 정보를 생산후 정보 출력
Student 클래스
package day10_oop.modifier2;
public class Student {
// 멤버 필드
private String name;
private int level, korean, english, math;
// getter & setter
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getLevel() {
return this.level;
}
public void setLevel(int level) {
switch(level) {
case 1: case 2: case 3:
break;
}
this.level = level;
}
public int getkorean() {
return this.korean;
}
public void setKorean(int korean) {
if(korean >= 0 && korean <= 100) {
this.korean = korean;
}
}
public int getEnglish() {
return this.english;
}
public void setEnglish(int english) {
if(english >= 0 && english <= 100) {
this.english = english;
}
}
public int getMath() {
return this.math;
}
public void setMath(int math) {
if(math >= 0 && math <= 100) {
this.math = math;
}
}
public int getSum() {
return this.korean + this.english + this.korean;
}
public double getAvg() {
return getSum() / 3.0;
}
public String getGrade() {
if(getAvg() < 70) {
return "F";
}
else if(getAvg() < 80) {
return "C";
}
else if(getAvg() < 90) {
return "B";
}
else {
return "A";
}
}
// 생성자
Student(String name, int level, int korean, int english, int math){
this.setName(name);
this.setKorean(korean);
this.setEnglish(english);
this.setMath(math);
}
// 출력 메소드
public void print() {
System.out.println("이름 : " + this.name);
System.out.println("총점 : " + this.getSum());
System.out.println("평균 : " + this.getAvg());
System.out.println("등급 : " + this.getGrade());
}
}
- 멤버 필드에 직접 접근하는 것을 제한하기 위해 멤버 필드의 접근제한은 private로 설정하고
메소드를 통해 값을 바꾸는 것은 허용하기 위해 메소드의 접근제한은 public으로 설정한다
메인 메소드 1. 사용자 입력 5개를 받은 후 객체 생성
package day10_oop.modifier2;
import java.util.Scanner;
public class Test01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 사용자 입력
System.out.print("이름 : ");
String name = sc.next();
System.out.println();
System.out.print("국어 점수 : ");
int level = sc.nextInt();
System.out.println();
System.out.print("국어 점수 : ");
int korean = sc.nextInt();
System.out.println();
System.out.print("영어 점수 : ");
int english = sc.nextInt();
System.out.println();
System.out.print("수학 점수 : ");
int math = sc.nextInt();
System.out.println();
// 객체 생성
Student a = new Student(name, level, korean, english, math);
// 출력
a.print();
}
}
메인 메소드 2. 사용자 입력을 받으면서 객체 생성
package day10_oop.modifier2;
import java.util.Scanner;
public class Test01_1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 입력한 후 객체의 해당 필드에 입력하는 방법 (입력 순서가 생성자 매개변수 순서가 됨)
Student a = new Student(sc.next(), sc.nextInt(), sc.nextInt(), sc.nextInt(), sc.nextInt());
// 출력
a.print();
}
}
- 입력을 받으면서 객체를 생성할 경우 생성자에 입력한 매개변수 순서대로 값을 입력해야 한다
(구문은 왼쪽에서 오른쪽으로 진행하므로 이름, 학년, 국어점수, 영어점수, 수학점수 순으로 입력해야 한다)
'국비교육 > 국비교육 복습' 카테고리의 다른 글
day11_oop.keyword4 : static 메소드 - 클래스를 인스턴스 생성하지 않고도 메소드 호출 가능 (★) (0) | 2022.08.13 |
---|---|
day10_oop.modifier4 : 경찰 객체 생성시 총 객체를 자동으로 소유하도록 (★★) (0) | 2022.08.13 |
day10_oop.getter3 : 멤버필드를 새로 정의하지 않고 총합, 평균 구하기 (2) (0) | 2022.08.13 |
day10_oop.getter2 : 멤버필드를 새로 정의하지 않고 총합, 평균 구하기 (1) (0) | 2022.08.13 |
Day10_oop.setter2 : setter의 활용 (★) (0) | 2022.08.07 |