반응형
# 과제 ex04_01
사용자로부터 5명의 성적 데이터를 (이름, 국어, 영어, 수학) 입력 받고 합계와 평균을 출력하라.
## 실행 결과
```
> java -classpath bin step02.assignment.Test02
입력? 홍길동 100 90 80
입력? 임꺽정 100 100 100
입력? 유관순 90 90 90
입력? 안중근 80 80 80
입력? 윤봉길 70 70 70
-----------
홍길동 100 90 80 270 90.0
임꺽정 100 100 100 300 100.0
유관순 90 90 90 270 90.0
안중근 80 80 80 240 80.0
윤봉길 70 70 70 210 70.0
>
<코드>
package bitcamp.assignment;
public class Test02 {
public static void main(String[] args) {
// 배열을 사용하면 같은 종류의 메모리를 아주 간단하게 만들 수 있다.
String[] name = new String[5];
int[] kor = new int[5];
int[] eng = new int[5];
int[] math = new int[5];
int[] sum = new int[5];
float[] average = new float[5];
java.io.InputStream keyboard = System.in;
java.util.Scanner keyScan = new java.util.Scanner(keyboard);
for (int i = 0; i < 5; i++) {
System.out.print("입력? "); // ex) 입력? 홍길동 100 90 80
name[i] = keyScan.next();
kor[i] = keyScan.nextInt();
eng[i] = keyScan.nextInt();
math[i] = keyScan.nextInt();
sum[i] = kor[i] + eng[i] + math[i];
average[i] = sum[i] / 3;
}
System.out.println("------------------------------");
for (int i = 0; i < 5; i++) {
System.out.printf("%s %d %d %d %d %f\n",
name[i], kor[i], eng[i], math[i], sum[i], average[i]);
}
}
}
<컴파일 및 실행결과>
<코드 응용하여 만들기>
<추가된 코드>
highestScore 라는 배열을 생성한다.
i는 1에서 부터 4까지 증가하게 될 것이므로,
i=1 에서 highestScore는 kor,eng,math 각 1번째 배열의 합이 된다.
이후에 i가 2..3..4 까지 증가하면서 currentScore 를 생성하고
highestScore 의 값을 currentScore 와 비교하여 최고값을 갱신한다.
최종적으로 갱신된 highestScore 가 있을 때
highestIndex 도 해당 배열의 넘버를 갖는다. (if문이 작동하는 때의 배열 숫자이기때문에)
name[highestIndex]와 average[highestIndex] 를 통해서.
시험을 가장 잘본 사람과 평균 점수를 출력할 수있다.
int highestScore = 0;
int highestIndex = 0;
for (int i = 1; i < 5; i++) {
int currentScore = kor[i] + eng[i] + math[i];
if (currentScore > highestScore) {
highestScore = currentScore;
highestIndex = i;
}
}
System.out.println("가장 시험을 잘본 사람은 " + name[highestIndex] + " " + average[highestIndex] + "점 입니다.");
반응형