안드로이드 개발

NumberFormatException 해결 방법

피커 2023. 5. 4. 13:20
728x90
반응형

안드로이드 자바 개발을 하다보면 NumberFormatException 을 마주치는 경우가 흔하다.

이는 변수의 타입을 잘못 캐스팅할때 주로 발생하게된다.

 

1. 예제 (오류 코드)

    아래의 오류 코드를 보면 munja라는 문자열 변수를 int 값으로 변경하기 위해 캐스팅을 시도했다.

    "123"과 같은 숫자형은 int 로 캐스팅이 가능하지만, 알파벳과 같은 문자열은 불가능하다.

    이때 발생하는것이 NumberFormatException 이다.

 

2. 문제 로그

3. 해결 방법

아래처럼 타입에 맞게 숫자형으로 문자열이 입력되면 해결이 됩니다.

   

*. 문제로그 원문

E  FATAL EXCEPTION: main
Process: com.picker.javaexception, PID: 19061
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.picker.javaexception/com.picker.javaexception.MainActivity}: java.lang.NumberFormatException: For input string: "munja"
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3635)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3792)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2210)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7839)
at java.lang.reflect.Method.invoke(Native Method)
at co m.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 
at co m.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) 
Caused by: java.lang.NumberFormatException: For input string: "munja"
at java.lang.Integer.parseInt(Integer.java:615)
at java.lang.Integer.parseInt(Integer.java:650)
at com.picker.javaexception.MainActivity.plusNumber(MainActivity.java:21)
at com.picker.javaexception.MainActivity.onCreate(MainActivity.java:16)
at android.app.Activity.performCreate(Activity.java:8051)
at android.app.Activity.performCreate(Activity.java:8031)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3608)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3792) 
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) 
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2210) 
at android.os.Handler.dispatchMessage(Handler.java:106) 
at android.os.Looper.loopOnce(Looper.java:201) 
at android.os.Looper.loop(Looper.java:288) 
at android.app.ActivityThread.main(ActivityThread.java:7839) 
at java.lang.reflect.Method.invoke(Native Method) 
at co m.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)  
at co m.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)  

 

*. NumberFormatException  관련 백서

Thrown to indicate that the application has attempted to convert a string to one of the numeric types, but that the string does not have the appropriate format.

Summary

 
 

Public constructors

NumberFormatException

Added in API level 1
 
Constructs a NumberFormatException with no detail message.

NumberFormatException

Added in API level 1
 
Constructs a NumberFormatException with the specified detail message.
 
반응형