2014-09-16 4 views
1

텍스트 및 숫자가있는 배열을 int로 변환하려고합니다.문자열 배열을 int로 변환합니다.

배열 separated :

  • 분리 [0] 텍스트
  • 분리 [1]
  • [2] 좀 더 텍스트

내가 원하는 것은 분리 된 그 [1]은 int가됩니다.

내가 시도 :

int logSetting = Integer.parseInt(String.valueOf(separated)); 

int logSetting = Integer.parseInt(String.valueOf(separated[1])); 

을 모두 응용 프로그램 충돌

09-16 09:57:30.865: E/AndroidRuntime(27938): FATAL EXCEPTION: main 

09-16 09:57:30.865: E/AndroidRuntime(27938): Process: my.project, PID: 27938 
09-16 09:57:30.865: E/AndroidRuntime(27938): java.lang.NumberFormatException: Invalid int: 

만들었다

"[Ljava.lang.String을 42b273f0 @"
09-16 09:57:30.865: E/AndroidRuntime(27938): at java.lang.Integer.invalidInt(Integer.java:137) 

09-16 09:57:30.865: E/AndroidRuntime(27938): at java.lang.Integer.parse(Integer.java:374) 

09-16 09:57:30.865: E/AndroidRuntime(27938): at java.lang.Integer.parseInt(Integer.java:365) 

09-16 09:57:30.865: E/AndroidRuntime(27938): at java.lang.Integer.parseInt(Integer.java:331) 

09-16 09:57:30.865: E/AndroidRuntime(27938): at my.project.MainActivity.fileReader(MainActivity.java:928) 

09-16 09:57:30.865: E/AndroidRuntime(27938): at my.project.MainActivity.logCat(MainActivity.java:944) 

09-16 09:57:30.865: E/AndroidRuntime(27938): at my.project.MainActivity$1.run(MainActivity.java:854) 

09-16 09:57:30.865: E/AndroidRuntime(27938): at android.os.Handler.handleCallback(Handler.java:733) 

09-16 09:57:30.865: E/AndroidRuntime(27938): at android.os.Handler.dispatchMessage(Handler.java:95) 

09-16 09:57:30.865: E/AndroidRuntime(27938): at android.os.Looper.loop(Looper.java:157) 

09-16 09:57:30.865: E/AndroidRuntime(27938): at android.app.ActivityThread.main(ActivityThread.java:5356) 

09-16 09:57:30.865: E/AndroidRuntime(27938): at java.lang.reflect.Method.invokeNative(Native Method) 

09-16 09:57:30.865: E/AndroidRuntime(27938): at java.lang.reflect.Method.invoke(Method.java:515) 

09-16 09:57:30.865: E/AndroidRuntime(27938): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) 

09-16 09:57:30.865: E/AndroidRuntime(27938): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) 

09-16 09:57:30.865: E/AndroidRuntime(27938): at dalvik.system.NativeStart.main(Native Method) 
+0

당신의 logcat 오류를 넣으십시오 –

+0

두 번째 경우에는 어떤 종류의 "충돌"이 발생합니까? 스택 추적을 게시하십시오. – AlexR

+0

separated [1] 1. 여기에 괄호가없는 1은 무엇을 의미합니까? –

답변

4

당신이

String[] separated=new String[]{"some text ","1","some more text"}; 
int logSetting = 0; 
    for(String i:separated){ 
    try { 
     logSetting = Integer.parseInt(i); 
     }catch (NumberFormatException e){ 
     System.out.println("NumberFormatException \""+i+"\" is not a number"); 
     } 
    } 
    System.out.println(logSetting); 

아웃처럼 뭔가를 할 수는 넣어 :

NumberFormatException "some text " is not a number 
NumberFormatException "some more text" is not a number 
1 
+0

Thx, 이것은 완벽하게 작동했습니다 –

+0

@RobertVerkerk 환영합니다 –

1

당신은 거의 다 왔어, int logSetting = Integer.parseInt(String.valueOf(separated[1])); 그냥 int logSetting = Integer.parseInt(separated[1]);해야한다. 이 코드가 작동하지 않으면 코드가 충돌합니다. 어떤 오류가 발생합니까? 당신은 예를 들어 올바른 형식

이없는 INT, 플로트, 더블, 길이 등 같은 숫자 값으로 문자열을 변환하려고 NumberFormatException 당신의 예외를 바탕으로

+0

답변에 대한 확신이 있습니까? op가 numberformatexcepion을 얻었습니다 –

+0

http://alvinalexander.com/blog/post/java/java-faq-what-is-numberformatexception –

+0

색인 [1]에있는 모든 항목이 "1"이면 예외를 throw해서는 안됩니다. 그렇게되면 나는 무엇이 잘못되었는지 전혀 모른다. –

0

:

public class ConvertStringToNumber 
{ 

    public static void main(String[] args) 
    { 
    try 
    { 
     String s = "FOOBAR"; 
     int i = Integer.parseInt(s); <--this line of code will never be reached 
     System.out.println("int value = " + i); 
    } 
    catch (NumberFormatException nfe) 
    { 
     nfe.printStackTrace(); 
    } 
    } 
  1. Source for the Code
  2. Read more and Another Source
관련 문제