세 과목의 점수를 입력받아 합계, 평균, 평균의 성취도, 취약과목을 출력하는 프로그램을 작성하라.
실행결과 예시
점수를 입력하세요 : 100
점수를 입력하세요 : 90
점수를 입력하세요 : 80
======= 성적 처리 결과 =======
합계 : 270 평균 : 90
성취도 : A
===== 노력이 가장 필요한 교과 =====
과목 : 과목3 점수 : 80
import java.util.Scanner;
public class Test1109{
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
// 시험 점수 입력
System.out.print("점수를 입력하세요 : ");
int sc1 = scan.nextInt();
System.out.print("점수를 입력하세요 : ");
int sc2 = scan.nextInt();
System.out.print("점수를 입력하세요 : ");
int sc3 = scan.nextInt();
System.out.println("======= 성적 처리 결과 =======");
// 성적 합계와 평균 구하기
int sum = sc1 + sc2 + sc3;
int avg = sum / 3;
System.out.println("합계 : "+sum+" 평균 : "+avg);
// 성취도 구하기
System.out.print("성취도 : ");
switch(avg/10) {
case 10 :
case 9 : System.out.println("A"); break;
case 8 : System.out.println("B"); break;
case 7 : System.out.println("C"); break;
default : System.out.println("D"); break;
}
System.out.println("===== 노력이 가장 필요한 교과 =====");
// 성적의 최솟값 구하기
int min;
if ( sc1 < sc2 ) {
if ( sc1 < sc3 ) min = sc1;
else min = sc3;
}
else {
if ( sc2 < sc3 ) min = sc2;
else min = sc3;
}
// 제일 낮은 점수의 과목과 점수 출력하기
System.out.print("과목 : ");
if ( min == sc1 ) System.out.println("과목1 "+"점수 : "+min );
else if ( min == sc2 ) System.out.println("과목2 "+"점수 : "+min );
else System.out.println("과목3 "+"점수 : "+min );
}
}
// 시험 점수 입력
System.out.print("점수를 입력하세요 : ");
int sc1 = scan.nextInt();
System.out.print("점수를 입력하세요 : ");
int sc2 = scan.nextInt();
System.out.print("점수를 입력하세요 : ");
int sc3 = scan.nextInt();
과목 3개의 점수를 입력받는다.
System.out.println("======= 성적 처리 결과 =======");
// 성적 합계와 평균 구하기
int sum = sc1 + sc2 + sc3;
int avg = sum / 3;
System.out.println("합계 : "+sum+" 평균 : "+avg);
입력받은 성적 sc1
sc2
sc3
3개를 더해 성적 합계를 구하여 sum
변수에 저장한다.
성적 합계를 성적 갯수로 나누어 평균을 구한 다음 avg
변수에 저장한다.
sum
avg
를 차례로 출력한다.
// 성취도 구하기
System.out.print("성취도 : ");
switch(avg/10) {
case 10 :
case 9 : System.out.println("A"); break;
case 8 : System.out.println("B"); break;
case 7 : System.out.println("C"); break;
default : System.out.println("D"); break;
}
성적 평균으로 성취도를 계산한다.
90점 이상
이면 A
80점 이상
이면 B
70점 이상
이면 C
70점 미만
이면 D
를 출력한다.
switch문
을 이용하여 성취도를 계산한다.
조건부분에 과목 평균을 나타내는 avg
를 10
으로 나누어 넣는다. 이 때 10
으로 나누는 이유는 case 100
case 99
case 98
... case 1
을 전부 쓰면 불필요한 데이터를 많이 소진하게 되기 때문에 10의 자리 부분만을 보게 하여 불필요한 수식을 제거하기 위함이다.
70점 미만
은 전부 D
등급이기 때문에 default
값으로 넣어주었다.
System.out.println("===== 노력이 가장 필요한 교과 =====");
// 성적의 최솟값 구하기
int min;
if ( sc1 < sc2 ) {
if ( sc1 < sc3 ) min = sc1;
else min = sc3;
}
else {
if ( sc2 < sc3 ) min = sc2;
else min = sc3;
}
sc1
sc2
sc3
중에서 제일 최하점을 구한다.
최솟값은 변수 min
으로 잡아준다.
sc1
가 sc2
보다 작고 sc3
보다도 작으면 min
에 sc1
의 값이 저장된다.
아래도 다음과 같다.
// 제일 낮은 점수의 과목과 점수 출력하기
System.out.print("과목 : ");
if ( min == sc1 ) System.out.println("과목1 "+"점수 : "+min );
else if ( min == sc2 ) System.out.println("과목2 "+"점수 : "+min );
else System.out.println("과목3 "+"점수 : "+min );
제일 낮은 점수의 과목명과 점수를 출력한다.
최솟값을 뜻하는 min
과 과목명이 같다면 해당 과목명과 min
을 출력한다.
다음 조건에 따라 세 과목의 점수를 입력받아 합계, 평균, 평균의 성취도, 취약과목을 출력하는 프로그램을 메서드를 사용하여 작성하라.
실행결과
점수를 입력하세요 : 100
점수를 입력하세요 : 90
점수를 입력하세요 : 80
======= 성적 처리 결과 =======
합계 : 270 평균 : 90
성취도 : A
===== 노력이 가장 필요한 교과 =====
과목 : 과목3 점수 : 80
1 점수 입력받는 메서드 : keyInput( ) 메서드
2 합계, 평균, 평균의 성취도 구하는 메서드 : getResult1( )
3 3등 과목(취약과목)을 출력하는 메서드 : getResult2( )
import java.util.Scanner;
public class Test1109{
public static void main(String args[]) {
// 시험 점수 입력
int sc1 = keyInput();
int sc2 = keyInput();
int sc3 = keyInput();
System.out.println("======= 성적 처리 결과 =======");
// 성적 합계와 평균, 성취도 구하기
getResult1(sc1, sc2, sc3);
System.out.println("===== 노력이 가장 필요한 교과 =====");
// 성적의 최솟값 구하기
int min = getResult2(sc1, sc2, sc3);
// 제일 낮은 점수의 과목과 점수 출력하기
System.out.print("과목 : ");
if ( min == sc1 ) System.out.println("과목1 "+"점수 : "+min );
else if ( min == sc2 ) System.out.println("과목2 "+"점수 : "+min );
else System.out.println("과목3 "+"점수 : "+min );
}
static int keyInput() {
Scanner scan = new Scanner(System.in);
System.out.print("점수를 입력하세요 : ");
int score = scan.nextInt();
return score;
}
static void getResult1(int sc1, int sc2, int sc3) {
int sum = sc1 + sc2 + sc3;
int avg = sum / 3;
System.out.println("합계 : "+sum+" 평균 : "+avg);
System.out.print("성취도 : ");
switch(avg/10) {
case 10 :
case 9 : System.out.println("A"); break;
case 8 : System.out.println("B"); break;
case 7 : System.out.println("C"); break;
default : System.out.println("D"); break;
}
}
static int getResult2(int sc1, int sc2, int sc3) {
int min;
if ( sc1 < sc2 ) {
if ( sc1 < sc3 ) min = sc1;
else min = sc3;
}
else {
if ( sc2 < sc3 ) min = sc2;
else min = sc3;
}
return min;
}
}
static int keyInput() {
Scanner scan = new Scanner(System.in);
System.out.print("점수를 입력하세요 : ");
int score = scan.nextInt();
return score;
}
점수 입력
의 기능을 하는 메서드
이다.
static int keyInput() {
static
은 정적 메서드
이다.
int
는 return
을 하는 변수의 타입
이다. 반환값이 정수이면 int
를 사용하고, 반환값이 실수이면 double
을 사용할 수 있다.
keyInput()
은 메서드명
이다. 메서드명 옆의 ()
에 매개변수가 없는 이유는 main 메서드
에서 가져올 변수가 없기 때문이다. 매개변수는 없어도 프로그램에 문제가 없다.
Scanner scan = new Scanner(System.in);
System.out.print("점수를 입력하세요 : ");
int score = scan.nextInt();
return score;
입력을 받기 위해 Scanner
를 사용한다.
점수 안내 멘트를 출력한다.
입력받은 점수를 score
에 저장한 후 score
값을 return
하여 main 메서드
로 보낸다. return
은 한 메서드
에 하나만 사용할 수 있다.
메서드
끼리는 서로 동급이므로 메서드
안에 메서드
가 있을 수 없으며, 변수명이 같은 것이 있어도 엄연히 다른 변수로 간주된다.
static void getResult1(int sc1, int sc2, int sc3) {
int sum = sc1 + sc2 + sc3;
int avg = sum / 3;
System.out.println("합계 : "+sum+" 평균 : "+avg);
System.out.print("성취도 : ");
switch(avg/10) {
case 10 :
case 9 : System.out.println("A"); break;
case 8 : System.out.println("B"); break;
case 7 : System.out.println("C"); break;
default : System.out.println("D"); break;
}
}
점수의 합계
평균
평균의 성취도
를 구하는 메서드
이다.
static void getResult1(int sc1, int sc2, int sc3) {
void
는 반환을 하지 않는다는 뜻이다. void
가 명시되어 있는 메서드
에서는 return
을 통해 값을 반환할 수 없다.
(int sc1, int sc2, int sc3)
부분에서 sc1
sc2
sc3
변수들은 main 메서드
에서 어떠한 변수의 값을 가져와서 getResult1 메서드
에서 해당 변수들을 사용할 수 있게 한다.
int sum = sc1 + sc2 + sc3;
int avg = sum / 3;
System.out.println("합계 : "+sum+" 평균 : "+avg);
sc1
sc2
sc3
의 합계를 sum
에 저장한다.
성적 합계를 성적의 갯수만큼 나누어 avg
에 평균 점수를 저장한다.
합계와 평균을 차례로 출력한다.
System.out.print("성취도 : ");
switch(avg/10) {
case 10 :
case 9 : System.out.println("A"); break;
case 8 : System.out.println("B"); break;
case 7 : System.out.println("C"); break;
default : System.out.println("D"); break;
}
}
위에서 구한 점수 평균을 switch문
에서 조건을 avg/10
로 설정해 구한다. 자세한 설명은 위로 다시 돌아가서 보도록 하자.
아까 리턴값의 타입이 void
였기 때문에 return
은 사용하지 않는다.
static int getResult2(int sc1, int sc2, int sc3) {
int min;
if ( sc1 < sc2 ) {
if ( sc1 < sc3 ) min = sc1;
else min = sc3;
}
else {
if ( sc2 < sc3 ) min = sc2;
else min = sc3;
}
return min;
}
매개변수
로 sc1
sc2
sc3
의 값을 main 메서드
에서 가져온다.
최솟값을 min
변수로 잡고 min
변수에 가장 못한 과목의 점수가 들어간다. 자세한 설명은 위로 다시 돌아가서 보도록 하자.
main 메서드
에서 최솟값
이라는 변수가 필요하므로 min
값을 return
시켜준다.
이제 이렇게 메서드
로 만든 기능들을 프로그램에서 사용할 시간이다.
import java.util.Scanner;
public class Test1109{
public static void main(String args[]) {
// 시험 점수 입력
int sc1 = keyInput();
int sc2 = keyInput();
int sc3 = keyInput();
System.out.println("======= 성적 처리 결과 =======");
// 성적 합계와 평균, 성취도 구하기
getResult1(sc1, sc2, sc3);
System.out.println("===== 노력이 가장 필요한 교과 =====");
// 성적의 최솟값 구하기
int min = getResult2(sc1, sc2, sc3);
// 제일 낮은 점수의 과목과 점수 출력하기
System.out.print("과목 : ");
if ( min == sc1 ) System.out.println("과목1 "+"점수 : "+min );
else if ( min == sc2 ) System.out.println("과목2 "+"점수 : "+min );
else System.out.println("과목3 "+"점수 : "+min );
}
입력받는 기능은 keyInput() 메서드
에서 해주고 있기 때문에 main 메서드
에서 Scanner
를 선언해줄 필요는 없다.
// 시험 점수 입력
int sc1 = keyInput();
int sc2 = keyInput();
int sc3 = keyInput();
keyInput()
에서 반환한 값인 score
를 sc1
sc2
sc3
에 저장한다.
System.out.println("======= 성적 처리 결과 =======");
// 성적 합계와 평균, 성취도 구하기
getResult1(sc1, sc2, sc3);
getResult1()
를 호출해 기능을 수행한다.
매개변수로 sc1
sc2
sc3
를 넣어 main 메서드
에 있는 변수들의 값을 getResult()
로 이동시켜 사용할 수 있게 한다.
성적 합계와 평균, 성취도를 구하는 기능을 하고 출력을 getResult()
에서 해주므로 return
값이 있을 필요도 어떠한 변수에 저장할 필요도 없다.
System.out.println("===== 노력이 가장 필요한 교과 =====");
// 성적의 최솟값 구하기
int min = getResult2(sc1, sc2, sc3);
getResult2()
를 호출하여 getResult2()
로 이동한다.
getResult2()
에서는 sc1
sc2
sc3
의 값을 가지고 특정 변수에 그 값을 저장해 사용한다.
getResult2()
에서 구한 최솟값을 반환하여 가지고 와서 min
변수에 저장한다.
아래에서 제일 낮은 점수의 과목과 점수를 출력해야 하기 때문에 최솟값을 반환시켜야 했다.
// 제일 낮은 점수의 과목과 점수 출력하기
System.out.print("과목 : ");
if ( min == sc1 ) System.out.println("과목1 "+"점수 : "+min );
else if ( min == sc2 ) System.out.println("과목2 "+"점수 : "+min );
else System.out.println("과목3 "+"점수 : "+min );
}
getResult2()
에서 구한 최솟값인 min
을 사용하여 제일 낮은 점수의 과목과 점수를 출력한다. 더 자세한 내용은 위의 내용을 참고하자.
점수를 입력하세요 : 100
점수를 입력하세요 : 60
점수를 입력하세요 : 1
======= 성적 처리 결과 =======
합계 : 161 평균 : 53
성취도 : D
===== 노력이 가장 필요한 교과 =====
과목 : 과목3 점수 : 1