循环计数字符串值

时间:2013-11-15 12:00:20

标签: java string loops integer

我必须显示v10000v10500范围内的所有服务器名称 下面是我尝试过的代码,但有时会显示零。

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的新手。

7 个答案:

答案 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和您的结果。