Skills/Java

Java - NumberFormatException 에러

aoaa 2022. 11. 14. 15:56

 3주차 프리코스 중 테스트 코드 실행에서 막힌 에러인데 원인과 해결방법을 정리했습니다.


1. NumberFormatException 원인

 공식 문서를 살펴보면 java.lang.NumberFormatException은 문자열을 숫자 유형 중 하나로 변환할 때 발생하며, 문자열에 적절한 형식이 없다는 것을 나타내기 위한 에러입니다.

또한 입력된 수가 자료형의 범위를 벗어나 해당 자료형으로 표현할 수 없는 경우 발생합니다. 

 

private int inputAmount() {
    String input = Console.readLine();
    return Integer.parseInt(input);
}

 에러가 발생한 메서드입니다. Console.readLIne();은 Scanner와 같이 입력을 받는 메서드입니다. 

입력을 숫자로 했을때는 문제가 없었지만, "10000j", "10 00"와 같이 String에 숫자가 아닌 문자나 공백이 포함되어 있어 java.lang.NumberFormatException이 발생했습니다.

 


2. 해결

public static int isNumber(String number) {
        try {
            int amount = Integer.parseInt(number);
            return amount;
        } catch (NumberFormatException e) {
            throws new IllegalArgumentException("입력 값에 문자 혹은 공백이 포함되어있습니다.");
        }
    }
--------------------------------------------------------------
public int inputAmount() {
    String input = Console.readLine();
    return ExceptionValidation.isNumber(input);
}

 Console.readLine()로 받은 패러미터를 전달하여 isNumber()라는 유효성 검증 메서드를 추가했습니다. 

try - catch를 통해 NuberformatException이 발생하면 예외를 던지도록 수정하여 해결.

 

 

 

 

참조

'Skills > Java' 카테고리의 다른 글

Java - Stream 사용법 및 예제  (0) 2022.11.25
Java - FIrst Class Collection(일급 컬렉션)  (0) 2022.11.17
Java - 간단한 예외처리 테스트  (0) 2022.11.12
Java - Lambda  (0) 2022.11.06
Java - Comparable & Comparator  (0) 2022.11.01