2016-11-18 2 views
-1

Ich habe ein Problem beim Konvertieren einer grundlegenden Float-Array in Zeichenfolge und dann zu verdoppeln.Konvertieren von Zeichenfolge in Doppelfehler

ich habe:

private static float[] getSample() { 

     float[] sample = new float[sampleSize]; 

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

der einen Schwimmer return [], dann benutze ich:

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

Diese zum Beispiel zurück: [0,62]. Ich denke, das Problem mit den eckigen Klammern ist I unter Verwendung überprüfen können:

System.out.println(sampleColor); 

Aber wenn ich versuche, es zu konvertieren, es zu verdoppeln gibt mir nur einen Fehler. Ich versuche, es mit parseDouble:

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

Was ist Ihre Absicht? Ein floatArray kann mehrere Werte enthalten. Und du willst es in einen doppelten Wert umwandeln ??? Oder willst du ein Doppel-Array? –

+0

Ich stimme Benjamin zu: Bis Sie erklären, warum Sie versuchen, ein Array von Doppelwerten so zu behandeln, als wäre es ein einzelner Wert, wird es nicht möglich sein, diese Frage zu verstehen. – Bobulous

+0

Die Zeichenfolge wird nur einen Wert haben, zB [x] wobei x der Wert ist, deshalb möchte ich keine Doppelreihe, aber nur ein Doppel aus den Antworten, die ich gesehen habe, dass ich die Klammern entfernen muss, um das zu tun Frage beantwortete trotzdem danke für die Zeit, um es zu betrachten. – Bakslat

Antwort

0

zu konvertieren, wenn die [] in der Zeichenfolge sind während der Analyse wird eine Ausnahme auslösen. um es zu analysieren, müssen Sie sie zuerst entfernen. Beispiel: samplecolor=sampleColor.replaceAll("[\\[\\]]", "");

+0

Und was, wenn es mehrere Werte im Array gibt? – Bobulous

+0

Es ist mein Fehler nicht zu erklären, dass es nur einen Wert zurückgibt, aber das Array wird benötigt. – Bakslat

+0

dann können Sie die Zeichenfolge auf alle ',' teilen. Jetzt haben Sie ein Array von Strings mit Werten wie '0.62', die Sie leicht konvertieren können, während Sie darüber iterieren – Aelop

-1

Sie haben Recht, es ist wegen der Klammern. Was Double.parseDouble(String s) erwartet, ist ein String, der einen doppelten Wert enthält. Hier geben Sie einen String, der technisch ein Array von Double-Werten ist.

Der Weg, dies zu lösen, ist für Sie, Ihre Zeichenfolge zu analysieren. Dazu müssen Sie die Klammern entfernen und die Werte durch Kommas trennen, wenn sie mehrere im Array enthalten.

+1

Dies ignoriert die Frage: Warum versucht das OP ein Array von Werten zu behandeln, als ob es ein einzelner Wert wäre. – Bobulous

+0

So seltsam es mir auch erscheint, die Frage zu beantworten, besteht darin, einen String, der ein Array von Werten enthält, in ein Double zu konvertieren, also ignoriert er die Frage nicht wirklich. –

+0

Aber der Aufruf von 'parseDouble' wird fehlschlagen, wenn das Array mehrere Werte enthielt, und diese Antwort adressiert das nicht wirklich. Außerdem denke ich, es ist besser zu versuchen, jemanden davon abzuhalten, die falsche Methode zu benutzen, wenn man denkt, dass er auf dem falschen Weg ist. – Bobulous

1

Angenommen, Sie gerade den ersten Schwimmer aus dem Array wollen:

double colorT = getSample()[0]; 

Hinweis: Es gibt keine Notwendigkeit, String als Zwischenschritt zu konvertieren.

0

Wenn Sie einen Schwimmer [] in ein Doppel [] konvertieren möchten, können Sie folgenden Code verwenden:

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

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

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