将字符串数组转换为int数组(泛型?)

时间:2012-09-07 09:28:03

标签: java generics casting

我有一个字符串,我想用某个分隔符

分割
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 :)

2 个答案:

答案 0 :(得分: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时可能会引发
  4. Integer.parseInt(value),处理它。

答案 1 :(得分: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