728x90
반응형

문제1

  1. 입력 부분
    -> 다음과 같이 map에 스캐너로 입력된 값 저장
    -> key : name, value : 이름 (ex, 홍길동)
    -> key : age, value : 나이 (ex, 30)
    -> key : addr, value : 주소 (ex, 서울)

    => 해당 map을 list에 저장
  2. 삭제 부분
    스캐너로 입력한 이름 값과 map의 name value 값과 동일 할 경우 리스트에서 삭제

    -> ex, 스캐너로 "홍길동"을 입력하면 name의 value가 "홍길동"인 map을 리스트에서 제거

  3. 출력 부분
    -> 콘솔에 '이름 : 홍길동, 나이 : 30, 주소 : 서울' 과 같은 형태로 출력

  4. 종료 부분
    -> 프로그램 종료

 


▶ 코드

1) 입력 부분

				//다음과 같이 map에 스캐너로 입력된 값 저장
				HashMap<String,Object> map = new HashMap<String,Object>();

				System.out.print("이름을 입력하세요 >> ");
				map.put("name", scan.next());
				System.out.print("나이를 입력하세요 >> ");
				map.put("age", scan.nextInt());
				System.out.print("주소을 입력하세요 >> ");
				map.put("address", scan.next());

				list.add(map); //해당 map을 list에 저장

 

 

2) 삭제 부분

				//스캐너로 입력한 값과 map의 name value 값과 동일 할 경우 리스트에서 삭제
				System.out.print("삭제할 내용을 입력하세요 >> ");
				Object obj = scan.next();
				for(int i=0;i<list.size();i++){
					if(obj.equals(list.get(i).get("name"))){	
						System.out.println("삭제 - 이름:"+list.get(i).get("name")+", 나이:"+list.get(i).get("age")+", 주소:"+list.get(i).get("address"));
						list.remove(i);
						break;
					} else
						System.out.println("해당 이름을 가진 사람이 없어 삭제되지 않았습니다.");
				}

 

 

3) 출력 부분

				for(int i=0;i<list.size();i++){
					System.out.print("이름:"+list.get(i).get("name"));
					System.out.print(", 나이:"+list.get(i).get("age"));
					System.out.println(", 주소:"+list.get(i).get("address"));
				}

 

 

4) 종료 부분

				System.out.println("프로그램이 종료되었습니다.");
				break;//while_out

 

 

 


▶ 출력 결과

1) 리스트 입력

(1)입력, (2)삭제, (3)출력, (4)종료 : 1
이름을 입력하세요 >> 홍길동
나이를 입력하세요 >> 30
주소를 입력하세요 >> 서울

(1)입력, (2)삭제, (3)출력, (4)종료 : 1
이름을 입력하세요 >> 유재석
나이를 입력하세요 >> 50
주소를 입력하세요 >> 인천

 

 

2) 입력한 리스트 내용 출력

(1)입력, (2)삭제, (3)출력, (4)종료 : 3
이름:홍길동, 나이:30, 주소:서울
이름:유재석, 나이:50, 주소:인천

 

 

3) 스캐너로 입력한 이름 값과 name value 값이 동일할 경우 리스트에서 삭제

(1)입력, (2)삭제, (3)출력, (4)종료 : 2
삭제할 내용을 입력하세요 >> 홍길동
삭제 - 이름:홍길동, 나이:30, 주소:서울

(1)입력, (2)삭제, (3)출력, (4)종료 : 3
이름:유재석, 나이:50, 주소:인천

(1)입력, (2)삭제, (3)출력, (4)종료 : 2
삭제할 내용을 입력하세요 >> 박명수
해당 이름을 가진 사람이 없어 삭제되지 않았습니다.

※ 일치하지 않는다면 삭제되지 않는다.

 

4) 프로그램 종료

(1)입력, (2)삭제, (3)출력, (4)종료 : 4
프로그램이 종료되었습니다.

 

 

 


▶ 전체 코드

		ArrayList<HashMap<String,Object>> list = new ArrayList<HashMap<String,Object>>();
		Scanner scan = new Scanner(System.in);

		//break문을 만날 때까지 무한 반복 
		while(true){
			System.out.print("(1)입력, (2)삭제, (3)출력, (4)종료 : ");
			int get = scan.nextInt();

			if(get==1){ //입력
				//다음과 같이 map에 스캐너로 입력된 값 저장
				HashMap<String,Object> map = new HashMap<String,Object>();

				System.out.print("이름을 입력하세요 >> ");
				map.put("name", scan.next());
				System.out.print("나이를 입력하세요 >> ");
				map.put("age", scan.nextInt());
				System.out.print("주소를 입력하세요 >> ");
				map.put("address", scan.next());

				list.add(map); //해당 map을 list에 저장
			} else if(get==2){ //삭제
				//스캐너로 입력한 값과 map의 name value 값과 동일 할 경우 리스트에서 삭제
				System.out.print("삭제할 내용을 입력하세요 >> ");
				Object obj = scan.next();
				for(int i=0;i<list.size();i++){
					if(obj.equals(list.get(i).get("name"))){	
						System.out.println("삭제 - 이름:"+list.get(i).get("name")+", 나이:"+list.get(i).get("age")+", 주소:"+list.get(i).get("address"));
						list.remove(i);
						break;
					} else
						System.out.println("해당 이름을 가진 사람이 없어 삭제되지 않았습니다.");
				}

			} else if(get==3){ //출력
				for(int i=0;i<list.size();i++){
					System.out.print("이름:"+list.get(i).get("name"));
					System.out.print(", 나이:"+list.get(i).get("age"));
					System.out.println(", 주소:"+list.get(i).get("address"));
				}

			} else if(get==4){ //종료
				System.out.println("프로그램이 종료되었습니다.");
				break;//while_out
			} 
			System.out.println(); //줄바꿈
		}//while_end

		scan.close();

 

 

 

 

 

 

문제2

  1. 입력 부분
     -> 다음과 같이 map에 스캐너로 입력된 값 저장
     -> key : name, value : 이름 (ex, 홍길동)
     -> key : age, value : 나이 (ex, 30)
     -> key : java, value : 자바 점수 (ex, 90), 단 0~100 사이 값이 아니면 다시 입력
     -> key : oracle, value : 오라클 점수 (ex, 100), 단 0~100 사이 값이 아니면 다시 입력

     => 해당 map을 list에 저장

  2. 삭제 부분
    스캐너로 입력한 값과 map의 name value 값과 age value값이 둘다 동일할 경우 리스트에서 삭제

     -> ex, 스캐너로 "홍길동 30"을 입력하면 name의 value가 "홍길동" 
    age의 value가 30인 map을 리스트에서 제거

  3. 출력 부분
     -> 콘솔에 '이름 : 홍길동, 나이 : 30, 자바점수 : 90, 오라클점수 : 100' 과 같은 형태로 출력

  4. 종료 부분
     -> 프로그램 종료

 


▶ 코드

1) 입력 부분

				HashMap<String,Object> map = new HashMap<String,Object>();

				System.out.print("이름을 입력하세요 >> ");
				map.put("name",scan.next());
				System.out.print("나이를 입력하세요 >> ");
				map.put("age",scan.nextInt());

				while(true){
					System.out.print("자바 점수를 입력하세요 >> ");
					int java = scan.nextInt();
					if(java>=0 && java <=100){ //0~100
						map.put("java",java);
						break;//while1_inner_out
					}
					else
						System.out.println("0부터 100까지의 숫자를 입력해야합니다.\n"); //가독성을 위해 줄바꿈
				}//while1_inner

				while(true){
					System.out.print("오라클 점수를 입력하세요 >> ");
					int oracle = scan.nextInt();
					if(oracle>=0 && oracle <=100){ //0~100
						map.put("oracle",oracle);
						break;//while2_inner_out
					}
					else
						System.out.println("0부터 100까지의 숫자를 입력해야합니다.\n"); //줄바꿈
				}//while2_inner

				list.add(map);

 

※  보완) 메소드를 이용해 자바와 오라클의 점수 범위를 중복 코드 없이 출력할 수 있다.

	static int score(Scanner scan, String str){
		int num;
		while(true){
			System.out.print(str + " 점수를 입력하세요 >> ");
			num = scan.nextInt();
			if(num>=0 && num <=100)
				break;
			else 
				System.out.println("0부터 100까지의 숫자를 입력해야합니다.\n"); //줄바꿈
		}
		return num;
	}
				map.put("java",score(scan,"자바"));
				map.put("oracle",score(scan,"오라클"));

 

 

2) 삭제 부분

				//name value 값과 age value값이 둘다 동일 할 경우 리스트에서 삭제
				System.out.print("삭제할 이름과 나이를 정확히 입력하세요 ex)홍길동 30 >> ");
				String name = scan.next();
				Object age = scan.nextInt();

				for(int i=0;i<list.size();i++){
					if(name.equals(list.get(i).get("name")) && age == list.get(i).get("age")){
						System.out.println("삭제 - 이름:"+list.get(i).get("name")+", 나이:"+list.get(i).get("age")+", 자바 점수:"+list.get(i).get("java")+", 오라클 점수:"+list.get(i).get("oracle"));
						list.remove(i);
						break;
					} else
						System.out.println("해당 정보와 일치하는 사람이 없어 삭제되지 않았습니다.");
				}

 

 

3) 출력 부분

				for(int i=0;i<list.size();i++){
					System.out.print("이름:"+list.get(i).get("name"));
					System.out.print(", 나이:"+list.get(i).get("age"));
					System.out.print(", 자바 점수:"+list.get(i).get("java"));
					System.out.println(", 오라클 점수:"+list.get(i).get("oracle"));
				}

 

 

4) 종료 부분

				System.out.println("프로그램 종료");
				break;//while_out

 

 


▶ 출력 결과

1) 리스트 입력 (자바와 오라클 점수가 0~100 사이 값이 아니면 다시 입력)

(1)입력, (2)삭제, (3)출력, (4)종료 : 1
이름을 입력하세요 >> 홍길동
나이를 입력하세요 >> 30
자바 점수를 입력하세요 >> 55
오라클 점수를 입력하세요 >> 77

(1)입력, (2)삭제, (3)출력, (4)종료 : 1
이름을 입력하세요 >> 유재석
나이를 입력하세요 >> 50
자바 점수를 입력하세요 >> -1
0부터 100까지의 숫자를 입력해야합니다.

자바 점수를 입력하세요 >> 0
오라클 점수를 입력하세요 >> 101
0부터 100까지의 숫자를 입력해야합니다.

오라클 점수를 입력하세요 >> 100

 

 

2) 입력한 리스트 내용 출력

(1)입력, (2)삭제, (3)출력, (4)종료 : 3
이름:홍길동, 나이:30, 자바 점수:55, 오라클 점수:77
이름:유재석, 나이:50, 자바 점수:0, 오라클 점수:100

 

 

3) 스캐너로 입력한 값과 map의 name value 값과 age value값이 모두 일치할 경우 리스트에서 삭제

(1)입력, (2)삭제, (3)출력, (4)종료 : 2
삭제할 이름과 나이를 정확히 입력하세요 ex)홍길동 30 >> 홍길동 30
삭제 - 이름:홍길동, 나이:30, 자바 점수:55, 오라클 점수:77

(1)입력, (2)삭제, (3)출력, (4)종료 : 3
이름:유재석, 나이:50, 자바 점수:0, 오라클 점수:100

(1)입력, (2)삭제, (3)출력, (4)종료 : 2
삭제할 이름과 나이를 정확히 입력하세요 ex)홍길동 30 >> 유재석 49
해당 정보와 일치하는 사람이 없어 삭제되지 않았습니다.

(1)입력, (2)삭제, (3)출력, (4)종료 : 3
이름:유재석, 나이:50, 자바 점수:0, 오라클 점수:100

※ 모두 일치하지 않는다면 삭제되지 않는다.

 

 

4) 프로그램 종료

(1)입력, (2)삭제, (3)출력, (4)종료 : 4
프로그램 종료

 

 

 


▶ 전체 코드

	//점수를 확인 및 입력하는 메소드
	//static으로 선언해야 호출 가능. 입력받은 점수를 반환해야하기 때문에 int형으로 반환한다.
	static int score(Scanner s, String str){
		int num;
		while(true){
			System.out.print(str + " 점수를 입력하세요 >> ");
			num = s.nextInt();
			if(num>=0 && num <=100)
				break;
			else 
				System.out.println("0부터 100까지의 숫자를 입력해야합니다.\n"); //줄바꿈
		}
		return num;
	}

	public static void main(String[] args) {
		ArrayList<HashMap<String,Object>> list = new ArrayList<HashMap<String,Object>>();
		Scanner scan = new Scanner(System.in);

		while(true){
			System.out.print("(1)입력, (2)삭제, (3)출력, (4)종료 : ");
			int get = scan.nextInt();

			if(get==1){
				//입력
				HashMap<String,Object> map = new HashMap<String,Object>();

				System.out.print("이름을 입력하세요 >> ");
				map.put("name",scan.next());
				System.out.print("나이를 입력하세요 >> ");
				map.put("age",scan.nextInt());
				map.put("java",score(scan,"자바"));
				map.put("oracle",score(scan,"오라클"));

				list.add(map);

			} else if(get==2){
				//name value 값과 age value값이 둘다 동일 할 경우 리스트에서 삭제
				System.out.print("삭제할 이름과 나이를 정확히 입력하세요 ex)홍길동 30 >> ");
				String name = scan.next();
				Object age = scan.nextInt();

				for(int i=0;i<list.size();i++){
					if(name.equals(list.get(i).get("name")) && age == list.get(i).get("age")){
						System.out.println("삭제 - 이름:"+list.get(i).get("name")+", 나이:"+list.get(i).get("age")+", 자바 점수:"+list.get(i).get("java")+", 오라클 점수:"+list.get(i).get("oracle"));
						list.remove(i);
						break;
					} else
						System.out.println("해당 정보와 일치하는 사람이 없어 삭제되지 않았습니다.");
				}

			} else if(get==3){
				//출력
				for(int i=0;i<list.size();i++){
					System.out.print("이름:"+list.get(i).get("name"));
					System.out.print(", 나이:"+list.get(i).get("age"));
					System.out.print(", 자바 점수:"+list.get(i).get("java"));
					System.out.println(", 오라클 점수:"+list.get(i).get("oracle"));
				}

			} else if(get==4){
				System.out.println("프로그램 종료");
				break;//while_out
			}
			System.out.println(); //줄바꿈
		}//while_end
	}//main_end

 

 

 

 

 

 

[JAVA] ★ Vector, ArrayList, HashMap ★ (16일차)

1. 컬렉션 2. 제네릭 3. Vector 4. ArrayList 5. HashMap 3. Vector ▶ Vector 의 특징 java.util.Vector 에서 E 대신 요소로 사용할 특정 타입으로 구체화한다. 여러 객체들을 삽입, 삭제, 검색하는 컨테이너 클래스이

deliciouscode.tistory.com

 

728x90
반응형

+ Recent posts