공부했던 자료 정리하는 용도입니다.
재배포, 수정하지 마세요.
총합, 평균, 최대, 최소 출력
배열을 활용해서 총합과 평균, 최대값과 최소값을 출력하는 예제이다. 먼저 입력 안내문을 출력할 때 과목명만 달리해서 print 문을 여러번 반복해야 하는데 매우 비효율적이다. 그래서 과목명을 String 배열인 name[과목수] 에 넣은 뒤에 for 문을 돌렸다. 입력받을 때도 for 문을 이용해서 5과목의 점수를 받는다. 마지막으로 연산을 하기위한 for 문을 한번 더 돌린다. score[5] 의 모든 배열요소를 더해서 총합인 sum 을 구하고, 각각의 값을 최대값인 max 와 최소값인 min 과 비교해서 최대값과 최소값을 갱신시킨다. 반복문이 모두 끝나면 배열의 길이만큼 총합을 나눠서 평균을 구한뒤 출력한다. ( double 형으로 형변환 해야 소숫점까지 제대로 반영된 값이 나온다 !)
package test;
import java.util.*; //Scanner 클래스를 사용하기 위한 import
class test{
public static void main(String[] args) {
String[] name = new String[5]; //과목명을 담을 String타입의 배열 name 선언
int[] score = new int[5]; //점수를 담을 int타입의 배열 score 선언
int sum = 0, max = 0, min = 100; //총합을 저장할 int타입의 변수 sum, 최대값을 저장할 max, 최소값을 저장할 min선언
double avg; //평균을 저장할 double타입의 변수 avg 선언
//각각의 과목명 저장
name[0] = "국어";
name[1] = "수학";
name[2] = "사회";
name[3] = "과학";
name[4] = "영어";
Scanner scanner = new Scanner(System.in); //입력을 받기 위한 Scanner클래스의 scanner객체 생성
for(int i = 0 ; i < score.length ; i++) { //score[]의 길이만큼 반복문을 수행
System.out.print(name[i] + "점수를 입력하세요 : ");
score[i] = scanner.nextInt(); //각각의 점수를 배열에 저장
}
for(int j = 0 ; j < score.length ; j++) { //연산을 하기 위한 반복문. score[]의 길이만큼 반복한다.
sum += score[j]; //배열의 요소를 sum에 더해서 총합을 구한다.
if(score[j] > max) { //점수가 최대값보다 큰 경우
max = score[j]; //최대값을 현재의 배열요소의 값으로 갱신시킨다.
}
if(score[j] < min) { //점수가 최소값보다 작은경우
min = score[j]; //최소값을 현재의 배열요소의 값으로 갱신시킨다.
}
}
avg = sum / (double)score.length; //총합을 배열의 길이(과목수)로 나눠서 평균을 구한다. double로 형변환 해야 소숫점이 나온다 !
System.out.printf("총합 : " + sum + "\n평균 : " + avg + "\n최대점수 : " + max + "\t최소점수 : " + min); //결과값출력
}
}
HashMap 을 이용해서 아래와 같이 만들수도 있다. entrySet( ) 을 이용하면 키와 값을 같이 읽어올 수도 있고 keySet( ) 이나 values( ) 를 이용해서 키와 값을 따로 따로 읽어올 수도 있다.
package Example;
import java.util.*;
public class Example {
public static void main(String[] args) {
HashMap map = new HashMap();
map.put("국어", new Integer(90));
map.put("수학", new Integer(100));
map.put("사회", new Integer(100));
map.put("과학", new Integer(80));
map.put("영어", new Integer(90));
Set set = map.entrySet(); //entrySet()하면 키와 값을 함께 읽어올수 있다.
Iterator it = set.iterator();
while(it.hasNext()) {
Map.Entry e = (Map.Entry)it.next();
System.out.println("과목 : " + e.getKey() + ", 점수 : " + e.getValue());
}
set = map.keySet(); //keySet하면 키만 모아서 불러올 수 있음
System.out.println("\n과목명 : " + set);
Collection values = map.values(); //values하면 값들만 모아서 불러올 수 있음
System.out.println("점수 : " + values);
it = values.iterator();
int total = 0 ; //합계를 저장하기 위한 변수
while(it.hasNext()) {
Integer i = (Integer)it.next();
total += i.intValue();
}
System.out.println("\n총점 : " + total);
System.out.println("평균 : "+ (float)total / set.size());
System.out.println("최고점수 : " + Collections.max(values)); //최고점
System.out.println("최저점수 : " + Collections.min(values)); //최저점
}
}
'Back end > Java 문제' 카테고리의 다른 글
[Java] 빈도수 구하기 (0) | 2019.07.05 |
---|---|
[Java] 배열 정렬(sort) (0) | 2019.07.03 |
[Java] for문을 활용한 별(*)찍기 (1) | 2019.06.19 |
[Java] Up&Down 게임 (0) | 2019.06.18 |
[Java] 문자열이 숫자인지 판별 (isDigit()) (0) | 2019.06.14 |