오늘 계산기 과제를 하면서
지난번에 내가 짠 코드를 보니 중복된 부분이 있어서,
이걸 좀 중복안되게 할 순 없을까?
라는 고민을 하게 되었다.
튜터님께 물어보니 중복된 코드들을 하나의 메서드로 만들면 어떠냐고 해서
하나의 메서드로 만들어 보았다.
기존 코드
try {
System.out.print("첫번째 숫자를 입력하세요: ");
num1 = sc.nextInt();
sc.nextLine();
if (num1 < 0) {
throw new ArithmeticException("0이상의 정수만 입력 가능합니다.");
}
System.out.print("사칙연산 기호를 입력하세요(+, -, *, /): ");
cal = sc.nextLine();
System.out.print("두번째 숫자를 입력하세요: ");
num2 = sc.nextInt();
sc.nextLine();
if (num2 < 0) {
throw new ArithmeticException("0이상의 정수만 입력 가능합니다.");
}
} catch (Exception e) {
System.out.println(e.getMessage());
여기에서 숫자입력 받는 부분들이 중복이 많았고, 뭔가 되게 보기가 싫었음
그래서 입력받는 메서드를 만듦.
초기 메서드 코드,,,ㅋㅋ
static int input(String notice, int num) {
System.out.print(notice);
num = sc.nextInt();
sc.nextLine();
if (num < 0) {
throw new ArithmeticException("0 이상의 정수만 입력해주세요.");
}
return num;
}
처음에는 바보처럼 이렇게 만듦
여기서 두번의 삽질이 있었다;;
일단 어차피 입력 받을 값을 쓸건데 굳이 매개변수로 값을 넣은거랑,
저렇게 메서드를 만들고 메인에서 메서드 반환값을 변수에 넣지 않아서
값은 항상 초기값인 0이 나왔던거임;;;;;;;;;;
멍청..
int num1 = 0;
int num2 = 0;
String cal = "";
// 숫자, 사칙연산 기호 입력받기
try {
input("첫번째 숫자를 입력하세요: ", num1);
System.out.print("사칙연산 기호를 입력하세요(+, -, *, /): ");
cal = sc.nextLine();
input("두번째 숫자를 입력하세요: ", num2);
} catch (Exception e) {
System.out.println(e.getMessage());
continue;
}
계속 삽질하면서 뭐가 잘못된건지 못찾다가;;
튜터님이 매개변수로도 받고 또 값을 입력받네요?
라는 말한마디에 깨달음..!
어? 그러네 나 바보네? 이러면서
다시 코드를 보니 값도 변수에 넣어주지 않아서 꼐속 0이었던거임..ㅋㅋ
최종 코드
static int input(Scanner sc, String notice) {
System.out.print(notice);
int num = sc.nextInt();
sc.nextLine();
if (num < 0) {
throw new ArithmeticException("0 이상의 정수만 입력해주세요.");
}
return num;
}
그렇게 우여곡절 끝에 완성되었다..!
그래도 뭔가 되게 중복되어서 지저분해보였던 코드가 전보다 깔끔해보여서 좋았다.
try {
num1 = input(sc,"첫번째 숫자를 입력하세요: ");
System.out.print("사칙연산 기호를 입력하세요(+, -, *, /): ");
cal = sc.nextLine();
num2 = input(sc,"두번째 숫자를 입력하세요: ");
} catch (Exception e) {
System.out.println(e.getMessage());
continue;
}
'TIL' 카테고리의 다른 글
| Java 리스트(List) 활용 & 반복문 리팩토링 (0) | 2026.06.23 |
|---|---|
| 람다(Lambda)와 스트림(Stream) 간단 정리 (0) | 2026.06.22 |
| Java - Enum으로 문자열 입력값과 연산자를 매칭하기 (0) | 2026.06.19 |
| 코드카타를 풀다가 알게 된 int와 double의 함정 (0) | 2026.06.10 |
| 자바입문 첫 코드카타 썰 푼다.. (0) | 2026.06.02 |