java.lang.NumberFormatException
Last updated
Last updated
문자열을 수로 변환할 때 발생하는 에러이다.
내가 가장 많이 하는 입력 실수 유형
문자열에 숫자가 아닌 문자가 들어있는 경우에도 이 에러가 발생한다. 위의 코드 입력이 아래와 같다면 런타임 에러가 발생한다! 1 2도 아래의 코드와 같은 이유로 발생한다고 할 수 있다! 왜냐하면 공백 한 칸이 숫자가 아닌 문자이기 때문이다!!!!!!
1a2 233
위의 소스에서처럼 2개의 숫자를 각각 한줄씩 X2 두 줄에 걸쳐 입력받는데, 아래와 같은 경우도 에러가 발생한다!
123
정수 하나만 입력으로 들어간다면 8번째 줄의 2번째 숫자를 입력받는 br.readLine()은 null을 리턴하기 때문이다! 따라서 int b = Integer.parseInt(null); 과 같은 의미를 갖고, null은 Integer로 변환할 수 없기 때문에 런타임 에러가 발생한다!
parseInt 구현된 부분과 에러나는 이유 : 입력 Strign의 길이가 0보다 작기 때문에 에러가 리턴되는 것이다!
아래처럼 [4][8]인 데이터를 입력받고 싶다면 아래 코드처럼 구현하면 된다. 10101010 01010000 00001111 11110000
근데 틀린 이유는 위의 코드에 앞서 br.readLine()이 하나 더 있었다. 그래서 배열 입력 한 줄은 하나씩 앞당겨져 가고 4번째(마지막) 입력은 결국 null을 리턴하고, parseInt(null)이 되어 계속 에러가 난 것이다.