2016-11-18 6 views
-1

基本的なfloat配列を文字列に変換してからdoubleに変換する際に問題があります。文字列をdoubleエラーに変換する

私が持っている:[]その後、私が使用するフロート返す

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); 

をしかし、私はそれを倍増するためにそれを変換しようとするとちょうど私にエラーを与えます。それは例外がスローされます解析中に[]の文字列である場合

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

あなたの目的は何ですか? floatArrayには複数の値を含めることができます。そしてあなたはそれを1つの倍の値に変換したいですか?または、ダブル配列が必要ですか? –

+0

私はBenjaminに同意します:なぜあなたが二重の値の配列を単一の値であるかのように扱う理由を説明するまで、この質問を理解することはできません。 – Bobulous

+0

文字列は1つの値、例えば[x]を持ちます。ここでxは2倍の配列ではありませんが、私はそれを行うために括弧とにかくそれを見る時間のために感謝の質問に答えてください。 – Bakslat

答えて

0

:私はparseDoubleを使用して、それを変換してみてください。それを解析するには、まずそれらを削除する必要があります。例:samplecolor=sampleColor.replaceAll("[\\[\\]]", "");

+0

配列に複数の値がある場合はどうなりますか? – Bobulous

+0

私はそれが1つの値だけを返すが、配列が必要であることを明確にしないのは間違いです。 – Bakslat

+0

これで文字列を '、'で分割することができます。今度は '0.62'のような値を持つ文字列を持っています。反復処理中に簡単に変換できます – Aelop

-1

大丈夫です、大括弧のためです。 Double.parseDouble(String s)が期待しているのは、Double値を含むStringです。ここでは、技術的にはDouble値の配列であるStringを与えています。

これを解決する方法は、あなたのStringを解析することです。そのためには、大括弧を削除し、複数の値が配列内にある場合は値をカンマで区切る必要があります。

double colorT = getSample()[0]; 

注:

+1

これは質問を無視します。なぜOPは値の配列を単一の値として扱うのですか? – Bobulous

+0

このようにするのも私にとっては奇妙なことですが、実際には値の配列を含むStringをDoubleに変換することが問題なので、実際には無視されません。 –

+0

しかし、配列に複数の値が含まれていた場合、 'parseDouble'の呼び出しは失敗し、この答えは実際にはそれに対処しません。また、あなたが間違った方向にいると思ったら、間違った方法を使って誰かに話しかけようとするのが良いと思います。 – Bobulous

1

あなただけの配列から最初のフロートをしたいと仮定すると、中間ステップとして文字列に変換する必要はありません。

0

あなたは二重の[]は、使用することができ、次のコードにフロート[]を変換したい場合:

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

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

for (int i = 0; i < dArray.length; i++) { 
    dArray[i] = fArray[i]; 
} 
関連する問題