문제
아래 1개의 클래스 파일을 작성하고, 메인에서 아래와 같은 실행결과가 나오도록 코딩하시오.
MapExample(실행클래스)
*숫자와 영단어가 혼합되어있다. 숫자로 변경하자!
결과
아래와 같이 10개의 객체를 HashMap에 저장하였다.
map.put("신은혁", 96);
map.put("김주성", 86);
map.put("김연안", 92);
map.put("김기리", 88);
map.put("안홍범", 90);
map.put("박주영", 44);
map.put("안정환", 55);
map.put("박성식", 2);
map.put("윤두호", 9);
map.put("엄기홍", 12);
출력결과와 동일하게 나오도록 구현하세요.
단, 반복자를 꼭 이용할 수 있도록 하세요.
결과
출력결과
종합 학생수 : 10
평균 점수 : 57
최고 점수 : 96
최고 점수를 받은 아이디 : 신은혁
최저 점수 : 2
최저 점수를 받은 아이디 : 박성식
코드
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class MapExample {
static HashMap<String, Integer> map = new HashMap<>();
Set<String> keys = map.keySet();
Iterator<String> it = keys.iterator();
public double average(HashMap<String, Integer> map) {
double sum = 0;
// System.out.println(map.size());
it = keys.iterator();
while (it.hasNext()) {
String name = it.next();
// System.out.println(name);
sum += map.get(name);
}
// System.out.println(sum);
return sum / map.size();
}
public String highestID() {
it = keys.iterator();
int best = map.get(it.next()); // while문으로 안 들어갈 수도 있으니 초기화
String bestName = "";
while (it.hasNext()) {
String name = it.next();
if (best < map.get(name)) {
best = map.get(name);
bestName = name;
}
}
return bestName;
}
public String lowestID() {
it = keys.iterator();
int worst = map.get(it.next()); // while문으로 안 들어갈 수도 있으니 초기화
String worstName = "";
while (it.hasNext()) {
String name = it.next();
if (worst > map.get(name)) {
worst = map.get(name);
worstName = name;
}
}
return worstName;
}
public static void main(String[] args) {
// HashMap<String, Integer> map = new HashMap<>();
map.put("신은혁", 96);
map.put("김주성", 86);
map.put("김연안", 92);
map.put("김기리", 88);
map.put("안홍범", 90);
map.put("박주영", 44);
map.put("안정환", 55);
map.put("박성식", 2);
map.put("윤두호", 9);
map.put("엄기홍", 12);
MapExample example = new MapExample();
System.out.println("출력결과");
System.out.println("종합 학생수 : " + map.size());
System.out.println("평균 점수 : " + (int) example.average(map));
System.out.println("최고 점수 : " + map.get(example.highestID()));
System.out.println("최고 점수를 받은 아이디 : " + example.highestID());
System.out.println("최저 점수 : " + map.get(example.lowestID()));
System.out.println("최저 점수를 받은 아이디 : " + example.lowestID());
}
}
다시 간단하게 풀어볼 필요가 있어 보인다.
메서드를 실행한 후
it = keys.iterator();
구문을 넣어서 iterator를 앞으로 다시 돌려주는 것이 중요하다
여기서 쓰이진 않지만 후에 쓸 일이 있을 것 같아 링크를 넣었다.
[Java] 자바 소수점 원하는 자리수 만큼 출력
자바로 문제를 풀다보면 소수점 몇째 자리까지 출력하라는 조건이 종종 나오곤 한다. double형의 두 수인 5.0과 3.0을 나눈 값을 출력하면 우측처럼 1.6666666666666667로 출력 가장 끝부분 다음 자리에
bullie.tistory.com
https://ssj9902.tistory.com/99
자바 소수점 버림
- 자바에서는 다른 언어들처럼 숫자를 쉽게 변환할 수 있는 객체가 존재하는데요, 그건 바로 Math 입니다. 이번에는 Math 객체를 사용해서, 여러가지 상황에 맞는 함수를 사용하는 법을 배워보도록
ssj9902.tistory.com
'Java' 카테고리의 다른 글
| [Java] TreeSet 사용 예제 (23-3) (0) | 2023.09.14 |
|---|---|
| [Java] Map 사용 예제 (23-2) (0) | 2023.09.14 |
| [Java] ArrayList 사용 예제 (22-2) (0) | 2023.09.13 |
| [Java] HashSet (hashCode,equals) 사용 예제 (22-1) (0) | 2023.09.13 |
| [Java] 자바 컬렉션 HashSet (21-4) (0) | 2023.09.07 |