Выполнение сложения при создании строки - PullRequest
0 голосов
/ 13 июня 2018

Я создаю несколько объектов с деталями, считанными из массива.У них будет стандартный формат для одной из их переменных экземпляра, который я хотел бы, частично, по возрастанию.В частности, я создаю нагрузку из 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", "Flat21 "и т. Д.

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

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

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

l = new Location ("Flat " + (i + 1)); //LINE A
0 голосов
/ 13 июня 2018

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

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

эффективно:

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

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

Должно быть:

l = new Location ("Flat " + (i + 1));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...