728x90
반응형
문제1
- 입력 부분
-> 다음과 같이 map에 스캐너로 입력된 값 저장
-> key : name, value : 이름 (ex, 홍길동)
-> key : age, value : 나이 (ex, 30)
-> key : addr, value : 주소 (ex, 서울)
=> 해당 map을 list에 저장 - 삭제 부분
스캐너로 입력한 이름 값과 map의 name value 값과 동일 할 경우 리스트에서 삭제
-> ex, 스캐너로 "홍길동"을 입력하면 name의 value가 "홍길동"인 map을 리스트에서 제거 - 출력 부분
-> 콘솔에 '이름 : 홍길동, 나이 : 30, 주소 : 서울' 과 같은 형태로 출력 - 종료 부분
-> 프로그램 종료
▶ 코드
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
- 입력 부분
-> 다음과 같이 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에 저장 - 삭제 부분
스캐너로 입력한 값과 map의 name value 값과 age value값이 둘다 동일할 경우 리스트에서 삭제
-> ex, 스캐너로 "홍길동 30"을 입력하면 name의 value가 "홍길동"
age의 value가 30인 map을 리스트에서 제거 - 출력 부분
-> 콘솔에 '이름 : 홍길동, 나이 : 30, 자바점수 : 90, 오라클점수 : 100' 과 같은 형태로 출력 - 종료 부분
-> 프로그램 종료
▶ 코드
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
반응형
'HRD_훈련 > 실습' 카테고리의 다른 글
[JAVA] Collections 클래스 문제 (18일차) (0) | 2023.06.09 |
---|---|
[JAVA] Iterator 심화 문제 풀이 (17일차) (0) | 2023.06.08 |
[JAVA] 해시맵 실습 (17일차) (0) | 2023.06.08 |
[JAVA] 인터페이스의 추상 메소드를 구현한 클래스 작성하기 (0) | 2023.06.05 |
[JAVA] 과일 예제 (업캐스팅/다운캐스팅) (0) | 2023.06.01 |