HashMap 문제


HashMap <String, Integer> hashMap = new HashMap<String, Integer>();

hashMap.put("a사원", new Integer(33));
hashMap.put("b사원", new Integer(35));
hashMap.put("c사원", new Integer(47));
위에 hashMap을 사용해서 아래 메뉴의 기능을 구현하시오.


1: 실적 추가
사원명과 실적 키보드로 입력 후 처리 ( get(), put() )
2: 실적 출력 
사원명 키보드로 입력 ( get() )
0:종료


정답 A) 1개의 클래스 내에서 처리하는 경우

import java.util.*;
public class HashMapExam01 {
public static void main(String[] args) {

HashMap <String, Integer> hashMap = new HashMap<String, Integer>();
hashMap.put("a사원", new Integer(33));
hashMap.put("b사원", new Integer(35));
hashMap.put("c사원", new Integer(47));

Scanner in = new Scanner(System.in);
int cmdNum=0, amt=0;
String empName;

while(true) {
    System.out.println("1:실적추가 2:실적출력 0:종료");
    cmdNum = in.nextInt();

if(cmdNum == 1) {
System.out.print("사원명:");
empName = in.next();
System.out.print("실적:");
amt = in.nextInt();
Integer oldAmt = hashMap.get(empName);
hashMap.put(empName, (oldAmt + amt));
}

else if(cmdNum == 2) {
System.out.print("사원명:");
empName = in.next();
Integer prnAmt = hashMap.get(empName);
System.out.println("실적:"+prnAmt);
}
}

}
}

----------------------------------------------------------------------------------------------------------

정답 B) 클래스 2개로 나눠서 할 경우

1) 메뉴를 띄우고 실행하는 프로그램
package 자료구조;
import java.util.HashMap;
import java.util.Scanner;

public class HashMap_test01 { 
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);

HashMap_test01_class obj = new HashMap_test01_class();

int cmdNo; // 메뉴 넘버
String str; // 입력받을 사원명
int performance; // 입력받을 실적

while(true){
System.out.print("1.실적추가 2.실적출력 0.종료 ");
cmdNo = scan.nextInt();

if(cmdNo == 1) {
System.out.print("실적 추가할 사원명: ");
str = scan.next();
System.out.print("실적 입력: "); 
performance = scan.nextInt();
obj.PerfomanceAdd(str, performance);
}

else if(cmdNo == 2) {
System.out.print("실적 출력할 사원명: ");
str = scan.next(); 
obj.PerfomancePrint(str); 
}

else if(cmdNo == 0) {
scan.close();
System.out.println("종료");
break;
}


}
------------------------------------
2) 실적을 추가, 출력하는 메소드를 포함하는 클래스
// 클래스 내에서 HashMap 사용시에는 클래스명으로 생성자 처리
package 자료구조;
import java.util.HashMap;
public class HashMap_test01_class {
HashMap<String, Integer> hashmap = new HashMap<String, Integer>();

public HashMap_test01_class(){     클래스명과 같은 생성자로 처리할 것
hashmap.put("a", new Integer(33));
hashmap.put("b", new Integer(35));
hashmap.put("c", new Integer(47));
}

public void PerfomanceAdd(String name, int perform){
Integer oldAmt = hashmap.get(name); // 기존 실적 입력받은 사원명에 담기
hashmap.put(name, (oldAmt + perform)); // 기존 실적+입력 실적 합산 
}

public void PerfomancePrint(String name){ 
Integer prnAmt = hashmap.get(name); // 기존 실적 출력
System.out.println(name+"사원의 실적:"+prnAmt);

}

--------------------------------------------------------------------------------------------------------







Posted by netyhobby
,