🪂 소스코드
// 문자 입력 시에도 예외처리할 수 있도록 추가했고,
// 멀티 catch문을 작성함!
package com.kh.day04.myexception.exercise;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Exercise_Exception {
public void exercise1() {
Scanner sc = new Scanner(System.in);
while(true) {
try {
System.out.print("정수 하나 입력 : ");
int num1 = sc.nextInt();
System.out.print("정수 하나 더 입력 : ");
int num2 = sc.nextInt();
int result = num1 / num2;
System.out.printf("%d를 %d로 나누면 몫은 %d입니다.\n",num1,num2,result);
} catch(ArithmeticException e) {
System.out.println("0으로 나눌 수 없습니다!");
} catch(InputMismatchException e) {
System.out.println("문를 입력하셨어요? 정수를 입력해주세요.");
// 무한 반복하지 않도록 작성함.
sc.next();
}
}
}
}
// ===============================================================================
// 정수를 나눌 때 에러가 나기 때문에 나머지 코드는 try문 밖에 작성해도 상관없다.
// 무한반복 처리 - while(ture) or if(;;)
// 변수 선언을 안해서 나는 오류메세지
// 1. num1 cannot be resolved to a variable
// 초기화를 하지 않아서 나는 오류메세지
// 2. The local variable num1 may not have been initialized
// int num1, num2;
// num1 = 0;
// num2 = 0;
// sc.next(); -> 무한반복하지 않도록 작성!
🪂 소스코드
public void exercise2() {
Scanner sc = new Scanner(System.in);
System.out.println("정수 3개를 입력하세요");
int sum = 0;
for(int i = 0; i < 3; i++) {
System.out.print(i + ">>");
// int num = sc.next();
try
{
sum += sc.nextInt();
}
catch(InputMismatchException e)
{
System.out.println("정수가 아닙니다. 다시 입력해주세요");
sc.next(); // 입력한 문자를 제거함
i--; // 2에서 다시 1로 i값을 만들어줌, i++ 와 만나서 증가하도록 하기 위함.
continue; // i++ 로 가게 해줌.
}
}
System.out.printf("3개의 정수의 합은 %d",sum);
}
🪂 소스코드
public void exercise3() {
// 범위를 벗어난 배열의 접근
// ArrayIndexOutOfBoundsException
int [] intArrs = new int[5];
try {
System.out.println(intArrs[5]);
} catch (ArrayIndexOutOfBoundsException e) {
// TODO: handle exception
System.out.println("배열의 인덱스가 범위를 벗어났습니다.");
}
}
🪂 소스코드
public void exercise4() {
// 정수가 아닌 문자열을 정수로 변환할 때 예외 발생
// (NumberFormatException)
String [] str = new String[2];
str[0] = "1206";
str[1] = "5.15";
// String -> int
try {
int result = Integer.parseInt(str[0]);
System.out.printf("숫자로 반환된 값은 %d\n", result);
int check = Integer.parseInt(str[1]);
System.out.printf("숫자로 변환된 값은 %d\n", check);
} catch (NumberFormatException e) {
// TODO: handle exception
System.out.println("해당 문자열은 정수로 변환할 수 없습니다.");
}
}