2012-09-07 72 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