我在将基本浮点数组转换为字符串然后转换为double时遇到问题。
我有:
private static float[] getSample() {
float[] sample = new float[sampleSize];
// Gets the sample an returns it
sampleProvider.fetchSample(sample, 0);
return sample;
}
返回一个float []然后我使用:
String sampleColor = Arrays.toString(getSample());
这例如返回:[0.62]。我认为问题在于方括号 我可以使用以下方式验证:
System.out.println(sampleColor);
但是当我尝试将其转换为双倍时,它只会给我一个错误。我尝试使用parseDouble转换它:
double colorT = Double.parseDouble(sampleColor);
答案 0 :(得分:1)
假设您只想要数组中的第一个浮点数:
double colorT = getSample()[0];
注意:无需转换为String作为中间步骤。
答案 1 :(得分:0)
如果[]在字符串中,则在解析时会抛出异常。要解析它,你必须先删除它们。例如:samplecolor=sampleColor.replaceAll("[\\[\\]]", "");
答案 2 :(得分: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];
}
答案 3 :(得分:-1)
你是对的,这是因为括号。
Double.parseDouble(String s)
期待的是包含Double值的String。在这里,你给它一个String,技术上是一个Double值数组。
解决这个问题的方法是解析你的String。为此,您需要删除括号,并使用逗号分隔值,如果数组中可能有多个。