【发布时间】:2015-06-10 13:18:57
【问题描述】:
我创建了一个重复检查,以确保新创建的用户名是唯一的。
看起来像这样:
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
谁能解释发生了什么?
【问题讨论】:
-
你用前导 0 格式化你的用户名。所以你的名字是 xxxyyy001,但你将它与 xxxyyy1 进行比较。所以你的 eqals 永远不会返回 true。 ... 使用 'String.format("%s%s%03d", p1, p2, p3)' 调用您的 equals 方法
-
你检查过 p3 是否在增加吗?
标签: java format return duplicates string.format