2009-07-22 9 views
15

"。"を置き換えたいと思います。私がファイルに書きたいString/doubleで "、"次のJavaコードjava.lang.String.replaceのヒントに関する問題?

double myDouble = myObject.getDoubleMethod(); // returns 38.1882352941176 
System.out.println(myDouble); 

String myDoubleString = "" + myDouble; 
System.out.println(myDoubleString); 

myDoubleString.replace(".", ","); 
System.out.println(myDoubleString); 

myDoubleString.replace('.', ','); 
System.out.println(myDoubleString); 

を使用して

I

38.1882352941176 
38.1882352941176 
38.1882352941176 
38.1882352941176 

はなぜ置き換えされていない次の出力は、行うことになっている何をしてもらいますか?最後の2行には "、"が含まれていると思います。

私は何か別のものをやる必要がありますか?提案?

+5

これは、何年も前から多くのJava初心者を凌駕してきました。 –

+2

私は置き換えのドキュメントを再読しました。それは明らかに で始まります。 "新しい文字列を返します..." ;-) – CL23

答えて

20

変数に新しい値を戻す必要があります。

double myDouble = myObject.getDoubleMethod(); // returns 38.1882352941176 
System.out.println(myDouble); 

String myDoubleString = "" + myDouble; 
System.out.println(myDoubleString); 

myDoubleString = myDoubleString.replace(".", ","); 
System.out.println(myDoubleString); 

myDoubleString = myDoubleString.replace('.', ','); 
System.out.println(myDoubleString); 
+4

いつものように問題はコンピュータの前に座っています;-) Thx – CL23

+6

新しい文字列はJavaではStringではありません。 – Powerlord

+1

PEBKAC - キーボードと椅子の間に問題があります。 :-P –

11

元の文字列は変更されていません。 (文字列は、Javaで不変であるため)

String modded = myDoubleString.replace(".",","); 
System.out.println(modded); 
5

replaceは、新しいStringを返します:

String newString = myDoubleString.replace(".", ","); 
+0

しかし、 'String'オブジェクトは不変ですが、' String'オブジェクトへの参照は( 'final'でないなら)変更できるので、' newString'を導入する必要はありません:http://stackoverflow.com/questions/1552301/immutable-of-strings-in-java – Raedwald

3

は必ず覚えて、文字列をあなたがこれを行う必要があると思いますので、呼び出しは、変更された文字列を返します。不変です。彼らは変更することはできません。何らかの方法でそれを変更するStringメソッドを呼び出す場合は、戻り値を格納する必要があります。常に。

私はユニで数回よりも、この以上で出捕まる覚え

:)

10

置き換える文字列をしているのではなく、DecimalFormatを使用しないで、なぜ大きな疑問はありますか?

+0

非常に良い点!あなたの答えは私の質問を超えていますが、私が本質的に持っていた問題を解決します。私はDecimalFormatを知らなかった、ありがとう! – CL23