JAVA를 잡아라!...
JAVA_예외처리(Exception)_#2 본문
문제
[10 8 5 0 -3] 배열리스트가 있습니다.
사용자에게 나눌 정수를 입력받습니다. ex) 1
100/배열리스트 1번째 정수의 결과를 출력해주세요!
100/10 = 10
사용자에게 정수를 입력받습니다. ex) 3
100/배열리스트 3번째 정수의 결과를 출력해주세요!
100/2 = 50
단, 100/0의 경우 "0으로는 나눌 수 없습니다." 출력
Code (예외처리 전)
package freefree;
import java.util.ArrayList;
import java.util.Scanner;
public class Freefree {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Integer> datas = new ArrayList<Integer>();
datas.add(10);
datas.add(8);
datas.add(5);
datas.add(0);
datas.add(-3);
System.out.println(datas);
int num1 = 0;
int result = 0;
System.out.print("나눌 정수 입력 >> ");
num1 = sc.nextInt();
result = 100 / datas.get(num1 - 1);
System.out.println(100 + "/" + datas.get(num1 - 1) + "=" + result);
}
}
Console
▶ 1
▶ 2
▶ 3
try-catch_ver1
올바른 값 입력할때까지 프로그램 종료 안됨
package practice01;
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Exception02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Integer> datas = new ArrayList<Integer>();
datas.add(10);
datas.add(8);
datas.add(5);
datas.add(0);
datas.add(-3);
System.out.println(datas);
System.out.print("나눌 정수 배열index위치 입력 >> ");
int num1 = 0;
int result = 0;
while(true) {
try {
num1 = sc.nextInt();
result = 100 / datas.get(num1 - 1);
break;
}
catch(IndexOutOfBoundsException e) {
System.out.println("해당 인덱스 요소는 없습니다.");
continue;
}
catch(ArithmeticException e) {
System.out.println("0으로 나눌 수 없습니다.");
continue;
}
catch(InputMismatchException e) {
sc.nextLine();
System.out.println("정수만 입력바랍니다.");
continue;
}
}
System.out.println(100 + "/" + datas.get(num1 - 1) + "=" + result);
}
}
try-catch_ver2
예외 발생하면 안내문 출력 후 프로그램 종료
package class02;
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Test03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Integer> datas = new ArrayList<Integer>();
datas.add(10);
datas.add(8);
datas.add(5);
datas.add(0);
datas.add(-3);
System.out.println(datas);
System.out.print("나눌 정수 배열index위치 입력 >> ");
int num1 = 0;
int result = 0;
try {
num1 = sc.nextInt();
result = 100 / datas.get(num1 - 1);
}
catch(IndexOutOfBoundsException e) {
System.out.println("해당 인덱스 요소는 없습니다.");
return;
}
catch(ArithmeticException e) {
System.out.println("0으로 나눌 수 없습니다.");
return;
}
catch(InputMismatchException e) {
sc.nextLine();
System.out.println("정수만 입력바랍니다.");
return;
}
System.out.println(100 + "/" + datas.get(num1 - 1) + "=" + result);
}
}
'JAVA > JAVA_복습문제' 카테고리의 다른 글
JAVA_MVC_#2_학생부.ver1 (1) | 2023.12.11 |
---|---|
JAVA_MVC_#1_계산기 (0) | 2023.12.11 |
JAVA_예외처리(Exception)_#1 (0) | 2023.12.08 |
JAVA_배열리스트_#1_Student (0) | 2023.12.07 |
JAVA_인터페이스_#1_TV (+ 싱글톤 패턴) (2) | 2023.12.07 |