무룩 공부방

[Java02] 25. 추상 클래스 응용 (1) (Abstract Class) (Eclipse) 본문

IT/Java02_Intermediate

[Java02] 25. 추상 클래스 응용 (1) (Abstract Class) (Eclipse)

moo_look 2023. 10. 7. 20:49

# 문제
키보드로 부터 정수 2개(a, b)를 입력받아 더하여 출력하시오
키보드로 부터 정수 2개(a, b)를 입력받아 빼기 출력하시오
키보드로 부터 정수 5개의 정수값을 입력받아 배열에 저장하고 평균을 출력하시오
단, 추상 클래스와 추상 메서드를 만들어 처리하시오
+ ArrayList로 처리
+ HashMap으로 처리


package java02_intermediate;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;

abstract class AbsTest {
	abstract int add(int a, int b); // 더하기
	abstract int sub(int a, int b); // 빼기
	abstract double avg(int[] arr); // 평균
	abstract double avg(ArrayList<Integer> arr); // ArrayList로 처리
	abstract double avg(HashMap<Integer, Integer> map); // HashMap으로 처리
}

class ResultTest extends AbsTest{
	@Override
	int add(int a, int b) {
		int result = a + b;
		return result;
	}
	@Override
	int sub(int a, int b) {
		int result = a - b;
		return result;
	}
	@Override
	double avg(int[] arr) {
		int sum = 0;
		for(int i = 0; i < arr.length; i++) {
			sum += arr[i];
		}
		double avg = (double)sum / arr.length;
		return avg;
	}
	@Override
	double avg(ArrayList<Integer> arr) {
		int sum = 0;
		for(Integer i : arr) {
			sum += i;
		}
		double avg = (double) sum / arr.size();
		return avg;
	}
	@Override
	double avg(HashMap<Integer, Integer> map) {
		int sum = 0;
		for(Integer i : map.keySet()) {
			sum += map.get(i);
		}
		double avg = (double) sum / map.size();
		return avg;
	}
	
}

public class Java25_Abstract {
	public static void main(String[] args) {
		
		ResultTest resulttest = new ResultTest();
		Scanner sc = new Scanner(System.in);
		
		///////////////
		// 키보드로 부터 정수 2개(a, b)를 입력받아 더하여 출력하시오
		System.out.print("2개의 정수를 입력하세요 : ");
		int add1 = sc.nextInt();
		int add2 = sc.nextInt();
		int add = resulttest.add(add1, add2);
		System.out.println("정수 a와 b를 더한 값 : "+add+"\n");
		
		////////////
		// 키보드로 부터 정수 2개(a, b)를 입력받아 빼기 출력하시오
		System.out.print("2개의 정수를 입력하세요 : ");
		int sub1 = sc.nextInt();
		int sub2 = sc.nextInt();
		int sub = resulttest.sub(sub1, sub2);
		System.out.println("정수 a와 b를 뺀 값 : "+sub+"\n");
		
		/////////////
		// 키보드로 부터 정수 5개의 정수값을 입력받아 배열에 저장하고 평균을 출력하시오
		int[] arr = new int[5];
		System.out.print("5개의 정수를 입력하세요 : ");
		
		for(int i = 0; i < arr.length; i++) {
			int input = sc.nextInt();
			arr[i] = input;
		}
		
		double avg = resulttest.avg(arr);
		System.out.print("정수 5개의 평균값  : "+avg+"\n\n");
		
		/////////////
		// + ArrayList로 처리
		ArrayList<Integer> arr1 = new ArrayList<Integer>();
		
		System.out.print("5개의 정수를 입력하세요 : ");
		
		for(int i = 0; i < 5; i++) {
			int input = sc.nextInt();
			arr1.add(input);
		}
		
		avg = resulttest.avg(arr1);
		System.out.print("정수 5개의 평균값  : "+avg+"\n\n");
		
		///////////////
		// + HashMap으로 처리
		HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
		
		System.out.print("5개의 정수를 입력하세요 : ");
		
		for(int i = 0; i < 5; i++) {
			int input = sc.nextInt();
			map.put(i, input);
		}
		avg = resulttest.avg(map);
		System.out.print("정수 5개의 평균값  : "+avg+"\n");
		
		sc.close();
		
	}

}