Я создал проверку дублирования, которая гарантирует, что только что созданные имена пользователей уникальны.Возврат отформатированной строки не работает должным образом
Это выглядит следующим образом:
String p1 = <code>; //First 3 chars in first name
String p2 = <code>; //First 3 chars in last name
int p3 = 1; //Unique identifier.
boolean dupeCheck;
do {
dupeCheck = false;
for (int i = 0; i < userNameList.size(); i++) {
if (userNameList.get(i).equals(p1+p2+Integer.toString(p3))) {
dupeCheck = true;
p3++;
}
}
} while (dupeCheck == true);
Это работает, если я вернуть:
return String.format("%s%s%d", p1, p2, p3);
Повторяющиеся имена пользователей получают имена, как:
- xxxyyy1
- xxxyyy2
- xxxyyy3
Отлично. Но я хочу, чтобы уникальный идентификатор (p3
) всегда был трехзначным. Именно здесь String.format вступает в игру вместе с моими проблемами.
Если я вернуть следующий код:
return String.format("%s%s%03d", p1, p2, p3);
По какой-то причине проверка боян не удается, и я получаю эти имена пользователей:
- xxxyyy001
- xxxyyy001
- xxxyyy001
Can anyo ne объяснить, что происходит?
форматирования имени пользователя с ведущими 0. поэтому ваше имя xxxyyy001, но сравнить его с xxxyyy1. поэтому ваши эгалы никогда не вернутся. ... вызовите метод equals с помощью 'String.format ("% s% s% 03d", p1, p2, p3)' – griFlo
Вы проверяли, увеличивается ли p3? – Diabolus