Палец вверх 2
Перевод
Перевод

Выполнение сложения при создании строки

Я создаю несколько объектов с деталями, считанными из массива. У них будет стандартный формат для одной из их переменных экземпляра, который я хотел бы, частично, по возрастанию. В частности, я создаю множество объектов Location которых я хотел бы иметь описание «Flat 1», «Flat 2» и т. Д.

Мне интересно, хотя, есть ли простой способ выполнить сложение при назначении значения для String . Урезанный до соответствующей части, мой код:

int size = locations.size();
Location l;
for (int i=0; i<size; i++){
    l = new Location ("Flat " + i + 1); //LINE A
    addLocation(l);
}
//several bits of code have been removed and swapped around here, I realise 
//that that snippet doesn't really perform anything useful

Тем не менее, Java интерпретирует оба символа «+» в LINE A как конкатенацию, означающую, что я получаю «Flat 01», «Flat 11», «Flat 21» и т. Д.

Очевидно, я мог изменить способ работы цикла, но мне было любопытно, возможно ли выполнение вычислений в myString = value + 2 типа myString = value + 2 ?

java string concatenation
задан MrB 13 июн. 2018 г., 1:16:25
источник

2 ответа

Решение 4
Перевод
Перевод

Конкатенация строк является ассоциативной слева, поэтому все, что вам нужно сделать, это заключить в скобки значение, которое вы хотите, чтобы убедиться, что оно вычисляется первым:

l = new Location ("Flat " + i + 1);

эффективно:

l = new Location (("Flat " + i) + 1);

Итак, i добавляю к строке "Flat " первым; и затем 1 добавляется к этому.

Должно быть:

l = new Location ("Flat " + (i + 1));
ответ дан Jacob G. 13 июн. 2018 г., 1:17:59
источник
Палец вверх 3
Перевод
Перевод

Используйте скобки:

l = new Location ("Flat " + (i + 1)); //LINE A
ответ дан Andi 13 июн. 2018 г., 1:18:28
источник