具有 Short 数据类型的函数与具有 double 的函数有 运行 不同之处

Function with Short data type is running way to different than with double

我有两个函数,尽管它们使用不同的数据类型,但我认为它们是相似的:

public double[] getdoubleArray(){
      final String[] myStringArray = oldArray[0].split(",");
      double[] d = new double[myStringArray.length];
      for(int i = 0; i < d.length -1; i++){
          d[i] = Double.parseDouble(myStringArray[i]);
}
    return d;
  }

这可以正常工作。

public short[] getshortArray(){
      final String[] myStringArray = oldArray[1].split(",");
      short[] s = new short[myStringArray.length];
      for(int i = 0; i < s.length -1; i++){
          s[i] = Short.parseShort(myStringArray[i]);
}
    return s;
  }

此函数在上述函数之后不久被调用,每次它在 i = 1 的循环中时,它都会被另一个线程或 ZygoteInit class 中断。但是当我将数据类型更改为 double 时它工作正常。(除了我需要一个短数组的事实) 谁能解释一下或有解决方案?

编辑 1. 我没有得到例外。当我调试时,我通常会在行与行之间找到一些不是实际代码的地方。

  1. 字符串中的数据不可能是问题所在,因为我将它复制到一个有效的短数组中。 (oldArray[1] 中的字符串是这样的:"0, 1, 2, 0, 2, 3, 4")

问题是输入字符串中有空格。 Double.parseDouble 容忍空格,而 Short.parseShort 遇到空格时抛出 NumberFormatException。试试 Short.parseShort(myStringArray[i].trim()).