[Java] 자바의 정석
[Java] 자바의 정석 / chap8) 예외처리 - 연습문제
sweetychocoding
2023. 9. 15. 09:35
728x90
8-1)
예외처리의 정의 : 프로그램 실행 시 발생할 수 있는 예기치 못한 예외의 발생에 대비한 코드를 작성하는 것, 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류
예외처리의 목적 : 예외의 발생으로 인한 실행 중인 프로그램의 갑작스런 비정상 종료를 막고, 정상적인 실행상태를 유지할 수 있도록 하는 것
8-2)
4
8-3)
4, 5
8-4)
1-3-5-1-2-5-6
8-5)
3-5
8-6)
1
=> 나는 System.exit를 할 경우 해당 메서드 호출만을 종료하는 지 알고 1-1-2-5-6이 출력될 줄 알았는데..
프로그램 자체를 종료하는 메서드였다. 따라서 1만을 출력한다.
8-7)
package example01;
import java.util.*;
public class Ex05_Chapter7 {
public static void main(String[] args) {
int answer = (int) (Math.random() * 100) + 1;
int input = 0;
int count = 0;
do {
count++;
try {
System.out.print("1과 100 사이의 값을 입력하세요 > ");
input = new Scanner(System.in).nextInt();
if (answer > input) {
System.out.println("더 큰 수를 입력하세요.");
} else if (answer < input) {
System.out.println("더 작은 수를 입력하세요.");
} else {
System.out.println("맞췄습니다.");
System.out.println("시도 횟수는 " + count + "번 입니다.");
break;
}
} catch (Exception e) {
System.out.println("유효하지 않은 값입니다. 다시 값을 입력해주세요.");
}
} while (true);
}
}
나 같은 경우에는 try문 안에 정답이나 정답보다 작거나 큰 값을 입력했을 때 출력하는 출력문까지 넣었는데
답지를 보니 try문에는 오직 숫자를 입력 받는 코드만 있었다.. 흐흐
생각을 해보니 그게 맞는 거 같다.
왜냐면 우리가 예외처리 해줘야 되는 것은 숫자가 아닌 문자를 입력했을 경우이기 때문이다.
수정된 코드는 다음과 같다.
package example01;
import java.util.*;
public class Ex05_Chapter7 {
public static void main(String[] args) {
int answer = (int) (Math.random() * 100) + 1;
int input = 0;
int count = 0;
do {
count++;
System.out.print("1과 100 사이의 값을 입력하세요 > ");
try {
input = new Scanner(System.in).nextInt();
} catch (Exception e) {
System.out.println("유효하지 않은 값입니다. 다시 값을 입력해주세요.");
continue;
}
if (answer > input) {
System.out.println("더 큰 수를 입력하세요.");
} else if (answer < input) {
System.out.println("더 작은 수를 입력하세요.");
} else {
System.out.println("맞췄습니다.");
System.out.println("시도 횟수는 " + count + "번 입니다.");
break;
}
} while (true);
}
}
8-8)
2-4-7
728x90