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:종료
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) {
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));
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;
int cmdNum=0, amt=0;
String empName;
while(true) {
System.out.println("1:실적추가 2:실적출력 0:종료");
cmdNum = in.nextInt();
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));
}
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);
}
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;
}
}
}
}
------------------------------------
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);
}
}
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);
}
}
--------------------------------------------------------------------------------------------------------
'자바의 기초문법' 카테고리의 다른 글
파일 입출력 기능과 성능을 향상시키는 클래스들 (0) | 2015.12.28 |
---|---|
파일 입출력 클래스: FileReader, FileWriter, FileInputStream, FileOutputStream (0) | 2015.12.28 |
ArrayList를 이용한 합집합, 교집합 메소드 (0) | 2015.12.22 |
Exception 클래스 (0) | 2015.12.22 |
System 클래스: System.in/out, getenv, getProperties, exit, arraycopy (0) | 2015.12.22 |