공부했던 자료 정리하는 용도입니다.

재배포, 수정하지 마세요.

 

 

 

 

 


총합, 평균, 최대, 최소 출력

배열을 활용해서 총합과 평균, 최대값과 최소값을 출력하는 예제이다. 먼저 입력 안내문을 출력할 때 과목명만 달리해서  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

+ Recent posts