Подтвердить что ты не робот

Цикл через счетное значение String

Я должен отображать все имена серверов в диапазоне от 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.

4b9b3361

Ответ 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);
}

Формат String построен следующим образом:
v10 → ваш шаблон строки сервера
%0 → нули, которые вам нужны
3d → будут добавлены три цифры

Таким образом, ваш int i будет отформатирован так.

Ответ 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-loop вместо этого, но это не проблема. Проблема заключается в порядке испытаний. если 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

Используйте String.format внутри цикла for:

for (int i = 10000; i <= 10500; ++i) {
    System.out.println(String.format("v%d", i));
}

Это будет считаться через эти целые числа и добавит к ним "v".

Ответ 7

Вы можете сделать for от 10000 до 10500 и преобразовать этот int (или любой тип, который вы используете) в String, используя множество решений, например. Integer.toString().

Затем вы можете объединить "v" и ваш результат с помощью StringBuilder.