返回格式化字符串无法正常工作
Returning a formatted string does not working properly
我创建了一个重复检查来确保新创建的用户名是唯一的。
看起来像这样:
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:
return String.format("%s%s%d", p1, p2, p3);
重复的用户名得到如下名称:
- xxxyyy1
- xxxyyy2
- xxxyyy3
太棒了。但我希望唯一标识符 (p3
) 始终为三位数。这就是 String.format 发挥作用的地方,还有我的问题。
如果我return下面的代码:
return String.format("%s%s%03d", p1, p2, p3);
出于某种原因,欺骗检查失败,我得到了这些用户名:
- xxxyyy001
- xxxyyy001
- xxxyyy001
谁能解释一下这是怎么回事?
如果您使用 %03d 存储用户名,即带有前导零,则在比较 userNameList 中的字符串时也应该使用它:
userNameList.get(i).equals(String.format("%s%s%03d", p1, p2, p3))
就像评论中说的那样:你存储你的名字的方式与你比较它的方式不同。
你也可以这样改变你的方法:
String p1 = "xxx"; //First 3 chars in first name
String p2 = "yyy"; //First 3 chars in last name
int p3 = 1; //Unique identifier.
while(true){
if(userNamesList.contains(String.format("%s%s%03d", p1, p2, p3))){
p3++;
}
else{
return String.format("%s%s%03d", p1, p2, p3);
}
}
我创建了一个重复检查来确保新创建的用户名是唯一的。
看起来像这样:
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:
return String.format("%s%s%d", p1, p2, p3);
重复的用户名得到如下名称:
- xxxyyy1
- xxxyyy2
- xxxyyy3
太棒了。但我希望唯一标识符 (p3
) 始终为三位数。这就是 String.format 发挥作用的地方,还有我的问题。
如果我return下面的代码:
return String.format("%s%s%03d", p1, p2, p3);
出于某种原因,欺骗检查失败,我得到了这些用户名:
- xxxyyy001
- xxxyyy001
- xxxyyy001
谁能解释一下这是怎么回事?
如果您使用 %03d 存储用户名,即带有前导零,则在比较 userNameList 中的字符串时也应该使用它:
userNameList.get(i).equals(String.format("%s%s%03d", p1, p2, p3))
就像评论中说的那样:你存储你的名字的方式与你比较它的方式不同。 你也可以这样改变你的方法:
String p1 = "xxx"; //First 3 chars in first name
String p2 = "yyy"; //First 3 chars in last name
int p3 = 1; //Unique identifier.
while(true){
if(userNamesList.contains(String.format("%s%s%03d", p1, p2, p3))){
p3++;
}
else{
return String.format("%s%s%03d", p1, p2, p3);
}
}