java.lang.String.replace问题的提示?

我想替换“。” 通过“,”在我想写入文件的String / double中。

使用以下Java代码

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

我得到以下输出

 38.1882352941176 38.1882352941176 38.1882352941176 38.1882352941176 

为什么不替换做它应该做的事情? 我希望最后两行包含一个“,”。

我必须做/使用其他东西吗? 建议?

您需要将新值分配回变量。

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

原始字符串未被修改。 该调用返回修改后的字符串,因此您需要执行以下操作:

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

更大的问题是为什么不使用DecimalFormat而不是做String替换?

replace 返回一个新的String (因为String在Java中是不可变的):

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

永远记住,字符串是不可变的。 他们无法改变。 如果您正在调用以某种方式更改它的String方法,则需要存储返回值。 总是。

我记得在Uni上多次被发现这件事:)