2016-11-18 81 views
-1

我在将基本浮点数组转换为字符串然后双精度时遇到问题。将字符串转换为双精度错误

我:

private static float[] getSample() { 

     float[] sample = new float[sampleSize]; 

     // Gets the sample an returns it 
     sampleProvider.fetchSample(sample, 0); 
     return sample; 
    } 

它会返回一个浮点数[],然后我用:

String sampleColor = Arrays.toString(getSample()); 

例如,这将返回:[0.62]。我认为这个问题是用方括号 我可以通过验证:

System.out.println(sampleColor); 

但是当我尝试将其转换为加倍它只是给我一个错误。我尝试使用parseDouble转换它:

double colorT = Double.parseDouble(sampleColor); 
+3

什么是你的意图是什么?一个floatArray可能包含多个值。你想将它转换成一个双重值?或者你想要一个双数组? –

+0

我同意本杰明的看法:直到你解释为什么你试图将一个双重值的数组看作是一个单一的值时,就不可能理解这个问题。 – Bobulous

+0

该字符串将只有一个值,例如[x]其中x将是值,这就是为什么我不想要数组的双数,但只有一个双从答案我看到我需要删除括号,以便做到这一点无论如何谢谢你的时间来看看它的问题。 – Bakslat

回答

0

如果[]在解析字符串时会抛出异常。解析它,你将不得不先删除它们。例如:samplecolor=sampleColor.replaceAll("[\\[\\]]", "");

+0

如果数组中有多个值,该怎么办? – Bobulous

+0

这是我的错误,不澄清它将只返回一个值,但需要数组。 – Bakslat

+0

然后你可以分割字符串'','。现在你有一个值为'0.62'的字符串数组,你可以很容易地在迭代它的时候进行转换 – Aelop

-1

你说得对,这是因为括号。 Double.parseDouble(String s)期望的是一个包含Double值的String。在这里,你给它一个String,它在技术上是一个Double值的数组。

解决这个问题的方法是让你解析你的字符串。为此,您需要删除括号,并且如果数组中可能有多个逗号,则用逗号分隔这些值。

+1

这忽略了一个问题:为什么OP试图将一组值视为单个值。 – Bobulous

+0

尽管这样做似乎很奇怪,但问题实际上是将包含值数组的String转换为Double,因此它并不真正忽略该问题。 –

+0

但是,如果数组确实包含多个值,那么对'parseDouble'的调用将会失败,而这个答案并没有真正解决这个问题。另外,我认为如果你认为他们在错误的轨道上,最好试着用某种错误的方法说话。 – Bobulous

1

假设你只是想从数组中第一条浮法:

double colorT = getSample()[0]; 

注:没有必要转换为字符串作为一个中间步骤。

0

如果你想为float []转换成一个double []您可以使用下面的代码:

float[] fArray = new float[] {0.62f}; 

double[] dArray = new double[fArray.length]; 

for (int i = 0; i < dArray.length; i++) { 
    dArray[i] = fArray[i]; 
} 
相关问题