我必须显示v10000
至v10500
范围内的所有服务器名称
下面是我尝试过的代码,但有时会显示零。
String template = "v10";
int count = 0;
while (count < 501) {
String number;
if (count < 100) {
number = "00" + Integer.toString(count);
} else if(count < 10) {
number = "0" + Integer.toString(count);
} else {
number = Integer.toString(count);
}
String server = template + number;
System.out.println(server);
count++;
}
但是当我向老板展示这个解决方案时,他只是笑着说:
我可以做得更好。
如何更改代码以使其正常工作?我是Java的新手。
答案 0 :(得分:23)
我愿意
for(int i = 10000; i <= 10500; i++)
System.out.println("v" + i);
答案 1 :(得分:14)
这是一个很长的路。更好地使用String.format()
适合您的解决方案是:
for (int i = 0; i <= 500; i++) {
String server = String.format("v10%03d", i);
System.out.println(server);
}
格式字符串的构建方式如下:
v10
- &gt;您的服务器的String模板
%0
- &gt;你需要的零
3d
- &gt;将添加三位数
所以你的int i
将被格式化。
答案 2 :(得分:8)
其他每一个答案都表明了解决这个问题的更好方法。我打算建议使用格式,但从10000开始的循环也很好:
for (int i = 0; i <= 500; i++) {
String server = String.format("v10%03d", i);
System.out.println(server);
}
或简单(并且更快):
for(int i = 10000; i <= 10500; i++) {
System.out.println("v" + i);
}
但我认为我们还应该修复OP代码中的错误:
while (count < 501){
String number;
if(count < 100){
number = "00" + Integer.toString(count);
}else if(count < 10){
number = "0" + Integer.toString(count);
}else{
number = Integer.toString(count);
}
String server = template + number;
System.out.println(server);
count++;
}
我建议使用for-loop代替,但这不是问题。问题是测试的顺序。如果count < 100
为false,则count < 10
也为false。你永远不会进入这个区块。切换if语句的顺序。
所以固定代码:
for (int count = 0; count <= 500; count++){
String number;
if(count < 10){
number = "00" + Integer.toString(count);
}else if(count < 100){
number = "0" + Integer.toString(count);
}else{
number = Integer.toString(count);
}
String server = template + number;
System.out.println(server);
}
答案 3 :(得分:5)
只需使用for
循环:
for(int i = 10000; i <= 10500; i++)
System.out.println("v" + i);
答案 4 :(得分:1)
String template = "v";
for(int i=10000;i<=10500;i++){
System.out.println(template+i);
}
答案 5 :(得分:0)
在for循环中使用String.format:
for (int i = 10000; i <= 10500; ++i) {
System.out.println(String.format("v%d", i));
}
这将计算这些整数并在前面加上&#34; v&#34;每个人。
答案 6 :(得分:0)
您可以在10000到10500之间执行for
,并使用各种解决方案将int
(或您使用的任何数字类型)转换为字符串,例如Integer.toString()
。
然后,您可以使用"v"
连接StringBuilder
和您的结果。