반응형
안녕하세요
자바 개발을 하다보면 문자열을 숫자로 변환하는 경우 제목과 같은 에러를 자주 볼 것 입니다
이 에러의 원인은 문자열을 변환할 때 숫자 형식이 아니라서 생기는 에러입니다
제가 에러가 났던 에러 예시와 해결 방법에 대해서 알아보겠습니다!
에러 원인
아래 이미지를 보면 13번 라인에서 에러가 뜬 것을 볼 수 있습니다
String을 Int로 변환하는 중 에러가 뜬 것입니다
에러 전문
5
9999999999999999999999999
Exception in thread "main" java.lang.NumberFormatException: For input string: "9999999999999999999999999"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at Stage.S07.S02_NumerSum.Main3.main(Main3.java:13)
에러의 원인은 입력한 string의 값이 int의 허용 범위를 초과해서 생긴 문제입니다
int의 허용 범위는 -2,147,483,648 ~ 2,147,483,647 여기까지 표현하는데 현재 허용범위를 초과했습니다
해결 방법
에러를 해결한 방법은 int가 아닌 다른 자료형으로 선언해서 해결했습니다
수정한 코드입니다
int가 아닌 double로 선언하여 에러를 해결했습니다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main4 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
br.readLine();
double b = Double.parseDouble(br.readLine());
int sum = 0;
while(b > 0)
{
sum += b % 10;
b = Math.floor(b / 10);
}
System.out.print(sum);
}
}
여기까지 java.lang.NumberFormatException 에러 해결 방법에 대해서 알아봤습니다
위의 에러가 정확한 원인이 아닐 수도 있지만 개발자분들에게 제 포스팅이 도움이 되었으면 좋겠습니다!
반응형
그리드형
'프로그래밍 > JAVA' 카테고리의 다른 글
[JAVA] 표준입출력 System.in 클래스 (0) | 2021.05.15 |
---|---|
[JAVA] 숫자/소수점 반올림/올림/내림 방법 (0) | 2021.05.13 |
[JAVA] 메서드(Method)란?? (0) | 2021.05.12 |
[JAVA] 이클립스 자동 줄 맞춤 (0) | 2021.05.10 |
[JAVA] 소수점 자릿수 반올림 및 속도비교 (0) | 2021.05.08 |