2012-09-07 4 views
0

은 내가 int 배열변환 문자열 배열은 배열 (제네릭?) int로

public String[] splitByDelimiter(String list,String delimiter) { 
    String[] items = list.split("\\" + delimiter); 

    for (String s : items) { 
     s.trim(); 
    } 

    return items; 
} 
에 문자열 배열을 반환 특정 구분

private int [] mMaxValues; 

    public void setMaximum(String maximum) { 
     mMaxValues = splitByDelimiter(maximum, ":"); 
    } 

그러나 splitByDelimiter 방법으로 분할 할 문자열을

이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 문자열 배열을 반복하여 정수로 변환하는 것이 최선의 해결책이 아니라고 생각합니다.

나는 또한하지만 난 그것보다 더 나은 솔루션이 같은데요 int 배열을 반환하는 새로운 splitByDelimiter을 만들 수 있습니다 ..

는 내가이없는 (제네릭을 사용할 수있는이 상황인가 제네릭에 대한 많은 경험)?

들으 : 문자열 배열을 통해

+4

String을 'int'로 캐스트 할 수 없으므로 구문 분석을해야하며 자동으로이를 수행 할 방법이 없습니다. –

+0

반환 된'String []'에는 Integer로 구문 분석 할 수있는 문자열 만 들어 있다고 생각하십니까? 즉 그것은 문자열로 숫자가 포함되어 있습니다! –

+2

'for' 루프가 아무 것도하지 않습니다. 문자열은 변경할 수 없으므로 문자열의 복사본을 배열로 자릅니다. – nullpotent

답변

3

문자열 배열을 명시 적으로 int 배열로 변환해야합니다. 사용

public void setMaximum(String maximum) { 
    Strin[] array = splitByDelimiter(maximum, ":"); 
    int i = 0; 
    mMaxValues = new int[array.length]; 
    for (String value : array) { 
     mMaxValues[i] = Integer.parseInt(value); 
     i++; 
    } 
} 

은 또한 당신이 NullPointerException의 원인이 몇 가지 경우를 처리해야합니다

  1. maximumInteger.parseInt(value)을 구문 분석하는 동안
  2. array
  3. NumberFormatException
  4. 제기 할 수있다 널 null의 경우, 그것을 처리 할 수 ​​있습니다.
1

루프와 int 배열에 저장합니다.

String input = ...; 
String[] parts = input.split(':'); 
int[] result = new int[parts.length]; 
for (int n = 0; n < parts.length; ++n) 
{ 
    result[n] = Integer.parseInt(parts[n]); 
} 
return result 
+2

파싱하기 전에 각 파트를'trim()'하고 싶습니다. –

+0

그건 사소한 변화입니다. parts [n] .trim() –

+0

@iccthedral 아니요. 'Integer.parseInt ("8")'을 시도하십시오. 'NumberFormatException'을줍니다. – Baz