2012-09-07 102 views
0

我有我想有一定的分隔符轉換字符串數組爲int數組(泛型?)

private int [] mMaxValues; 

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

但splitByDelimiter方法拆分返回一個字符串數組轉換成int數組

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

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

    return items; 
} 
字符串

解決此問題的最佳方法是什麼?我猜測迭代字符串數組並將它們轉換爲整數不是最好的解決方案。

我還可以創建一個新的splitByDelimiter返回一個int數組,但我猜有比這更好的解決辦法..

這是一個情況下,你可以使用泛型(我沒有很多泛型經驗)?

THX :)

+4

您不能將一個字符串強制轉換爲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. maximum是空
  2. array是空
  3. NumberFormatException得到提升,同時分析Integer.parseInt(value),處理它。
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