Советы по проблеме 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

Почему замена не делает то, что она должна делать? Я ожидаю, что последние две строки содержат ",".

Должен ли я делать/использовать что-то еще? Предложения?

Ответы

Ответ 1

Вам нужно присвоить новое значение переменной.

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

Ответ 2

Исходная строка не изменяется. Вызов возвращает измененную строку, поэтому вам нужно будет сделать это:

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

Ответ 3

Чем больше вопрос, почему бы не использовать DecimalFormat вместо того, чтобы заменить String?

Ответ 4

replace возвращает новую строку (поскольку String неизменна в Java):

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

Ответ 5

Всегда помните, строки неизменяемы. Они не могут измениться. Если вы вызываете метод String, который каким-то образом его изменяет, вам нужно сохранить возвращаемое значение. Всегда.

Я помню, как вы узнали об этом больше, чем несколько раз в Uni:)