본문 바로가기

study/Programming

[Java] 예외처리문(try~catch), 곱한 값이 음수일 경우

728x90

 

import java.util.Scanner;

public class CalculatorExample{
	static int mul(int x, int y){
    	int result= x*y;
        return result;
    }
    static int div(int x, int y){
    	System.out.println("x * y=" +mul(x, y));
        System.out.println("x / y=" +div(x, y));
    }
    
    public static void main(String[] args){
    	System.out.println("정수값 2개 입력해주세요");
        
        Scanner.scanner= new Scanner(System.in);
        int x= scanner.nextInt();
        int y= scanner.nextInt();
        
        resultShow(x, y);
     }
        

 

이 코드에서 발생할 수 있는 예외를 2개 찾고, 예외 처리 코드를 작성하는 문제입니다.

제가 찾은 예외는 다음과 같습니다.

1. 정수를 0으로 나누는 경우

2. 받는 x,y 값이 int 범위에서 벗어나는 경우

 

2개를 찾으라고 했지만 int 범위에서 벗어나는 경우에서 또 하나가 추가된다고 생각했습니다.

3. x, y값을 범위에 맞게 받았으나, mul함수에서 곱해지면서 int범위에서 초과되는 경우

 

그래서 저의 답은 

package assign07;

import java.util.InputMismatchException;
import java.util.Scanner;

public class CalculatorExample { 
	static int mul(int x, int y) {
		int result= x*y;
		return result;
	}
	static int div(int x, int y) {
		int result= x/y;
		return result;

	}
	static void resultShow(int x, int y) {
		try{
			System.out.println("x*y= "+ mul(x,y));
			if (mul(x,y) - Integer.MAX_VALUE > 0) // 곱한 결과가 overflow((결과값이 음수로나올때!!))
			    throw new Exception();
			  } catch (Exception e1) { // 예외 발생시 오류 메시지 출력 후 종료
			   System.out.println("곱한 결과가 오버플로입니다.");
			   System.exit(0);
			  }		
		
		try { //정수를 0으로 나눌 때 처리되는 예외처리문 
			System.out.println("x/y= "+ div(x,y));
		}catch(ArithmeticException e) {
			System.out.println("0으로 나눌 수 없습니다.");
			System.exit(0);
		}
	}

	public static void main(String[] args) {
		System.out.println("정수값 2개를 입력해주쇼");
		Scanner scanner= new Scanner(System.in);
		try{ // int 범위인 2147483647 가 넘은 숫자, 예외 발생
			int x= scanner.nextInt();
			int y= scanner.nextInt();
			resultShow(x,y);
		}catch(InputMismatchException ime){
			System.out.println("int 범위인 2147483647 가 넘은 숫자를 입력하셨습니다~");
		}
		
	}

}

 

728x90
반응형

'study > Programming' 카테고리의 다른 글

[Java] HashMap  (2) 2020.06.15
[Java] 제네릭 메소드로 변경하기  (0) 2020.06.11
[JAVA] 추상 메소드, 인터페이스  (0) 2020.05.19