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 |