循环计数字符串值[重复]
Posted
技术标签:
【中文标题】循环计数字符串值[重复]【英文标题】:Loop through a counting String value [duplicate] 【发布时间】:2013-11-28 19:40:11 【问题描述】:我必须显示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 新手。
【问题讨论】:
切换你的 if else/if 左右。count < 10
位于顶部,count < 100
位于底部
你需要一个更有帮助的老板。
总是首先检查最低值,否则它将永远无法进行该测试(9 小于 100 且小于 10,因此您将进入小于 100。我现在将代码更改为小于首先是 10。此外,对于 10 以下的值,您添加 2 个零,对于 100 以下的值,您只添加 1 个零,这样所有值都将有 3 个数字 :-)
@RobChurch 你是对的。老年人/老板应该更有帮助。
【参考方案1】:
我愿意
for(int i = 10000; i <= 10500; i++)
System.out.println("v" + i);
【讨论】:
请把 这就是我要写的……【参考方案2】:这是一条很长的路。更好地使用String.format() 一个可行的解决方案是:
for (int i = 0; i <= 500; i++)
String server = String.format("v10%03d", i);
System.out.println(server);
格式字符串是这样构建的:v10
-> 服务器的字符串模板%0
--> 你需要的零3d
--> 三位数将被添加
所以你的 int i
将被这样格式化。
【讨论】:
使用 String.format 非常昂贵,而且有点复杂。恕我直言。 @PeterLawrey:总的来说,String.format 是一个强大而好的解决方案。但就 OP 的问题而言,您的答案会更合适。 @dTDesign:就我而言,彼得的解决方案更好。但我会牢记字符串格式。为此 +1 我同意 String.format 是一种更灵活的解决方案,注意这一点很有用。【参考方案3】:所有其他答案都提出了解决此问题的更好方法。我打算自己建议使用格式,但是从 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 循环,但这不是问题。问题是测试的顺序。如果count < 100
为假,那么count < 10
也为假。你永远不会进入这个街区。切换 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);
【讨论】:
我最喜欢你的第一个解决方案。它实用,显示意图并且易于扩展/重用。【参考方案4】:只需使用for
循环:
for(int i = 10000; i <= 10500; i++)
System.out.println("v" + i);
【讨论】:
晚了几秒钟!【参考方案5】: String template = "v";
for(int i=10000;i<=10500;i++)
System.out.println(template+i);
【讨论】:
【参考方案6】:在 for 循环中使用 String.format:
for (int i = 10000; i <= 10500; ++i)
System.out.println(String.format("v%d", i));
这将计算这些整数,并在每个整数前面加上一个“v”。
【讨论】:
【参考方案7】:您可以从 10000 到 10500 执行 for
并使用各种解决方案将 int
(或您使用的任何数字类型)转换为字符串,例如Integer.toString()
.
然后您可以使用StringBuilder
连接"v"
和您的结果。
【讨论】:
以上是关于循环计数字符串值[重复]的主要内容,如果未能解决你的问题,请参考以下文章
减少计数值以重复循环循环不起作用。 python中的for循环有一个异常处理程序,它有一个continue语句