具有 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. 我没有得到例外。当我调试时,我通常会在行与行之间找到一些不是实际代码的地方。
- 字符串中的数据不可能是问题所在,因为我将它复制到一个有效的短数组中。 (oldArray[1] 中的字符串是这样的:"0, 1, 2, 0, 2, 3, 4")
问题是输入字符串中有空格。 Double.parseDouble
容忍空格,而 Short.parseShort
遇到空格时抛出 NumberFormatException
。试试 Short.parseShort(myStringArray[i].trim())
.
我有两个函数,尽管它们使用不同的数据类型,但我认为它们是相似的:
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. 我没有得到例外。当我调试时,我通常会在行与行之间找到一些不是实际代码的地方。
- 字符串中的数据不可能是问题所在,因为我将它复制到一个有效的短数组中。 (oldArray[1] 中的字符串是这样的:"0, 1, 2, 0, 2, 3, 4")
问题是输入字符串中有空格。 Double.parseDouble
容忍空格,而 Short.parseShort
遇到空格时抛出 NumberFormatException
。试试 Short.parseShort(myStringArray[i].trim())
.