Pokemon.java
- 포켓몬 클래스이다.
- 이름과 전투력을 지정할 수 있다.
public class Pokemon {
public final String name;
public final int cp;
// 포켓몬 생성자 인수 : 이름, 전투력
public Pokemon(String name, int cp) {
this.name = name;
this.cp = cp;
}
// String에서 toString이라는 원래 있는 메소드를 오버라이드
@Override
public String toString() {
return name + "(" + cp + ")";
}
}
PokeBag.java
- 포켓몬을 저장하는 가방의 개념으로
- 같은 종류의 포켓몬을 저장하는 리스트를 만들고 그러한 여러종류의 포켓몬 리스트들을 가진 개념이다.
- 포켓몬을 넣어서 분류하여 저장하고 찾고 삭제한다.
- 가장 강한 포켓몬을 포켓몬의 종류별로 찾을 수 있고 종류 상관없이 가장 강한 포켓몬을 찾을 수 있다.
import java.util.ArrayList;
import java.util.HashMap;
public class PokeBag {
// 이름을 넣으면 해당 이름을 가진 포켓몬리스트를 짝진 HashMap
private final HashMap<String, ArrayList<Pokemon>> pokemons = new HashMap<String, ArrayList<Pokemon>>();
// 이름을 넣으면 해당 이름을 가진 포켓몬리스트를 반환
public ArrayList<Pokemon> getPokemons(String name) {
return pokemons.get(name);
}
// 포켄몬을 인수로 받고 해당이름과 이름을 가진 리스트를 포켓백의 HashMap에 넣어주는 함수
public void add(Pokemon pokemon) {
// 해당 포켓몬을 가진 포켓몬 리스트가 없다면
if (getPokemons(pokemon.name) == null) {
// 이름을 가진 포켓몬 리스트 객체를 생성하고 포켓몬 HashMap에 추가한다.
ArrayList<Pokemon> samePokemonList = new ArrayList<>();
samePokemonList.add(pokemon);
pokemons.put(pokemon.name, samePokemonList);
}else {
// 해당 포켓몬을 가진 포켓몬 리스트가 있다면 포켓몬 HashMap에 이름과 리스트를 짝지어 저장한다.
pokemons.put(pokemon.name, getPokemons(pokemon.name));
}
}
// 포켓몬 이름을 가진 것중 가장 센 포켓몬을 반환하는 함수
public Pokemon getStrongest(String name) {
// 해당이름을 가진 포켓몬리스트중 첫번째 포켓몬
if (pokemons.get(name) == null) {
return null;
}
Pokemon strongPokemon = new Pokemon(name, 0);
// 포켓몬 리스트에서 하나씩 포켓몬 대결해본다.
// 만약 찾고자 하는 포켓몬이 없다면?
for (int i = 0; i < pokemons.size(); i++) {
for (Pokemon pokemon : pokemons.get(name)) {
// 포켓몬 cp가 높다면 센 포켓몬이 바뀐다.
if (strongPokemon.cp < pokemon.cp) {
strongPokemon = pokemon;
}
}
}
// 가장 센 포켓몬 반환
return strongPokemon;
}
public Pokemon getStrongest() {
Pokemon strongPokemon = new Pokemon("", 0);
// 모든 포켓몬 이름들을 하나씩 꺼내보자
for (String name : pokemons.keySet()) {
// 꺼낸 포켓몬 이름을 가진 포켓몬 리스트 중 가장 강한 포켓몬을 뽑고 다시 붙어보자.
if (getStrongest(name) == null){
continue;
}else {
if (strongPokemon.cp < getStrongest(name).cp) {
strongPokemon = getStrongest(name);
}
}
}
return strongPokemon;
}
}
public class Main {
public static void main(String[] args) {
System.out.println(dictionary.find("Book"));
System.out.println(dictionary.find("glasses"));
pokeBag.add(new Pokemon("마릴", 816));
pokeBag.add(new Pokemon("마그마", 1024));
pokeBag.add(new Pokemon("마그마그", 215));
pokeBag.add(new Pokemon("마그마그", 136));
pokeBag.add(new Pokemon("라프라스", 1822));
pokeBag.add(new Pokemon("마릴", 215));
pokeBag.add(new Pokemon("마릴", 185));
pokeBag.add(new Pokemon("마릴", 110));
pokeBag.add(new Pokemon("니드킹", 1709));
pokeBag.add(new Pokemon("마릴", 39));
pokeBag.add(new Pokemon("마자용", 12));
System.out.println(pokeBag.getStrongest("마릴"));
System.out.println(pokeBag.getStrongest());
System.out.println(pokeBag.getStrongest("피카츄"));
}
}
마릴(816)
라프라스(1822)
null
'Programming language > Java' 카테고리의 다른 글
Java - 실무4 [학점계산기] (2) | 2020.10.18 |
---|---|
Java - 실무3 [영화관] (2) | 2020.10.18 |
Java - 실무1 [은행] (2) | 2020.10.18 |
Java - 8 [Wrapper Class, ArrayList, HashMap] (2) | 2020.10.17 |
Java - 7 [클래스 메소드 - 인스턴스 메소드, String 클래스, Math, Random] (2) | 2020.10.17 |