다음 예시를 보자.
public class App() {
public static void main(String[] args) {
Human human = new Human();
a();
b();
}
}
public static void a() {
b();
}
public static void b() {
}
public static void c() {
}
Kiosk
클래스의 start()
메서드에 너무 많은 기능이 있다고 느꼈다. 그래서 일단 다음과 같이 메인 메뉴를 선택하라는 메시지와 입력값이 숫자가 맞는지 확인 하는 부분을 분리했다.
원래 코드는 다음과 같다. while문 안에 있는 코드 중 일부이다.
System.out.print("메인 메뉴를 선택하세요: ");
if (!sc.hasNextInt()) {
System.out.println("숫자를 입력해주세요.");
sc.next();
continue;
}
위 코드를 메서드로 빼서 getUserInput()
를 구현해보았다.
// 메시지 출력 후 사용자 입력이 숫자인지 검사
private int getUserInput(Scanner sc, String message) {
System.out.print(message);
while (!sc.hasNextInt()) {
System.out.println("숫자를 입력해주세요.");
sc.next();
System.out.print(message);
}
return sc.nextInt();
}
while문 안에 있던 코드가 조금은 간결해졌다.
// 메인 메뉴 입력
int selectedMenu = getUserInput(sc, "메인 메뉴를 선택하세요: ");
...
// 메뉴 아이템 입력 받기
int selectedMenuItem = getUserInput(sc, "메뉴를 선택하세요: ");
public class MyHashSetV0 {
private int[] elementData = new int[10];
private int size = 0;
// O(n) - contains() 메서드 때문
public boolean add(int value) {
// 중복 값 체크
if (contains(value)) {
return false;
}
elementData[size] = value;
size++;
return true;
}
// O(n) - for문으로 하나하나 찾아야 함
public boolean contains(int value) {
for (int data : elementData) {
if (data == value) {
return true;
}
}
return false;
}
public int size() {
return size;
}
@Override
public String toString() {
return "MyHashSetV0{" +
"elementData=" + Arrays.toString(Arrays.copyOf(elementData, size)) +
", size=" + size +
'}';
}
}
원래 오늘 Lv.6 키오스크를 시작하려고 했는데, Lv.5 키오스크를 좀 더 리팩토링 하고 싶어서 내일로 미뤘다. 그렇지만 오늘은 자바 강의를 주로 듣느라 많이 하진 못했다. 그리고 메모리 세션과 챌린지 OT까지 있어 시간이 빠르게 지나간 것 같다. 내일 모든걸 끝내겠다는 생각으로(이런 생각을 매일 하는 것 같긴 하지만...?) 불태워야겠다.🔥