자바 integer.parseint 오류 - jaba integer.parseint olyu

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

자바 integer.parseint 오류 - jaba integer.parseint olyu

안녕하세요. 제임스 입니다.

이번에는 개발 중 종종 발생하는 오류중 하나인 NumbreFormatException 에 대해 정리 해보겠습니다. 

NumbreFormatException 은 왜 발생 하는 것일 까요? 

단어를 잘 보시면 이유를 알 수 있습니다. 

Number 와 관련된 오류 인데... 

Format Exception 이라고 합니다. 즉, 형식 오류라는 의미 인데요. 

풀어서 이야기 하면 숫자 형식 오류 라는 의미가 됩니다. 

그렇다면 어떤 경우에 발생하는지 예제를 보면서 다시 살펴 보겠습니다.

앞서 문자열을 숫자로 변환하는 방법에 대해 정리 했었는데요. (아래 링크 참조)

2018/03/06 - [Java] - [ 자바 코딩 ] Java Integer.parseInt

이와 관련하여 잘못된 사용으로 인해 오류가 발생 할 수 있습니다. 

package com.james.test;

public class JavaNumbers {

public static void main(String[] args) {

String str = "O1O";

System.out.println(Integer.parseInt(str));

}

}

cs

위 코드를 보시면 String str = "010"; 이라고 입력 되어 있습니다. 

사실 이 코드는 숫자 010 이 아닌 영문 대문자 O 와 숫자1 의 조합으로 영문 소문자로 사용 시 아래와 같이 표현 할 수 있습니다. 

String str = "o1o";

즉, 숫자 형이 아닌 말 그래로 문자열입니다. 

문자열을 숫자형으로 변환한다???

절대 불가능한 일이죠. 

이 경우 위 코드를 실행 시키명 아래와 같은 오류를 볼 수 있습니다. 

Exception in thread "main" java.lang.NumberFormatException: For input string: "O1O"

at java.lang.NumberFormatException.forInputString(Unknown Source)

at java.lang.Integer.parseInt(Unknown Source)

at java.lang.Integer.parseInt(Unknown Source)

at com.james.test.JavaNumbers.main(JavaNumbers.java:5)

이런 오류가 발생 하면 안되 겠지만 발생하는 경우가 있기 때문에 Exception 처리를 해주는 것이 중요 합니다. 

그래서 Integer.parseInt() 를 사용할 경우 try ~ catch ~ 를 이용하여 감싸줍니다. 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

package com.james.test;

public class JavaNumbers {

public static void main(String[] args) {

try {

String str = "010";

System.out.println(Integer.parseInt(str));

catch (NumberFormatException e) {

// NumberFormatException 이 발생한 경우 처리 방법

catch (Exception e) {

// Exception 이 발생한 경우 처리 방법

}

}

}

cs

각각의 Exception 종류에 따라 원하는 코드를 작성하여 처리 하여 주면 됩니다. 

만약 위와 같이 아무런 오류 처리를 하지 않을 경우 오류가 발생하더라도 아무런 반응을 하지 않게 됩니다.

위 코드에서는 정상적으로 숫자 010 을 입력 하였습니다. 

문제가 되던 오입력된 숫자형 무자열을 수정 하였으니 제대로 나오겠죠? ^^

실행 결과 값은 아래와 같습니다. 

10 

 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D

자바 integer.parseint 오류 - jaba integer.parseint olyu

자바 integer.parseint 오류 - jaba integer.parseint olyu

[JAVA] 자바 NumberFormatException 원인/예외처리해결

NumberFormatException 은 프로그램 코딩시 종종 일어나는 오류입니다.

영어 그대로 해석하면  숫자형 포맷 오류 발생입니다.

문자를 숫자로 변경시도하다가 에러가 발생하는 경우입니다.
(Double.parseDouble(), Float.parseFlost() 등등 다른 자료형변환 함수도 포함)

자세하게 케이스를 분류해보면

case1. 숫자로 변경할시 숫자형이 아닌 문자열일 경우입니다. 은근히 이런경우 많습니다.

String codeB = "123o"; // 문자형 변수 codeB 에 문자 123O을 입력 123 + O(알파벳 대문자 O)

System.out.println(Integer.parseInt(codeB)) // 정수아닌 문자가 포함되어 에러발생

case2. 변경하는 자료형보다 범위가 큰경우

String codeC = "123123123123123123123123";

System.out.println(Integer.parseInt(codeC)) // int 범위보다 큰 정수여서 에러발생

case3. null 입력시

String codeD = null;

System.out.println(Integer.parseInt(codeD)) // null을 변환시키려고 해서 에러발생

case4. 문자 앞뒤로 공백이 있는경우

String codeE = " 123 ";

System.out.println(Integer.parseInt(codeE)) // 123 문자열 앞뒤에 공백이 있어서 에러발생

아래 샘플예제에서 확인해보시죠.

package joon;

public class codeTest {

    public static void main(String[] args) throws Exception{


        String codeA = "123"; // 문자형 변수 codeA 에 문자 123을 입력
        System.out.println(Integer.parseInt(codeA));  // codeA를 숫자로 변환
    
        String codeB = "123o"; // 문자형 변수 codeB 에 문자 123o을 입력 123 + o(알파벳o)
        System.out.println(Integer.parseInt(codeB)); // codeB를 숫자로 변환



    }
}

실행결과 입니다. 아래와 같이 Exception 에러가 발생하였습니다.

자바 integer.parseint 오류 - jaba integer.parseint olyu

java.lang.NumberFormatException : for input string: "123o"

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

at java.lang.Integer.parseInt(Integer.java:580)

at java.lang.Integer.parseInt(Integer.java:615)

at joon.codeTest,main(codeTest.java:12)

그럼 만약 입력받은 변수가 문자가 들어왔을때 어떻게 처리를 하면될까요?

이럴경우에는 아래와 같이 try 캐치를 이용하여 Exception 관리를 해주면됩니다.

package joon;

public class codeTest {

    public static void main(String[] args) throws Exception{

        String codeA = "";
        try{

            codeA = "123o";
            System.out.println(Integer.parseInt(codeA));

        }catch(NumberFormatException e){

	//NumberFormatExcetion 발생시 에러 처리
            codeA = "100"; // 디폴트 값이 있으면 설정
            System.out.println(Integer.parseInt(codeA));

        }catch(Exception e){
            e.printStackTrace();
        }


    }
}

NumberFormatException 에러처리 해결방법 이였습니다.