Ответ 1
Я бы сделал
for(int i = 10000; i <= 10500; i++)
System.out.println("v" + i);
Я должен отображать все имена серверов в диапазоне от 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.
Я бы сделал
for(int i = 10000; i <= 10500; i++)
System.out.println("v" + i);
Это очень длинный путь. Лучше использовать 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
будет отформатирован так.
Все остальные ответы предлагают лучший подход к этой проблеме. Я собирался предложить использовать формат, но цикл, начинающийся с 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);
}
Просто используйте цикл for
:
for(int i = 10000; i <= 10500; i++)
System.out.println("v" + i);
String template = "v";
for(int i=10000;i<=10500;i++){
System.out.println(template+i);
}
Используйте String.format внутри цикла for:
for (int i = 10000; i <= 10500; ++i) {
System.out.println(String.format("v%d", i));
}
Это будет считаться через эти целые числа и добавит к ним "v".
Вы можете сделать for
от 10000 до 10500 и преобразовать этот int
(или любой тип, который вы используете) в String, используя множество решений, например. Integer.toString()
.
Затем вы можете объединить "v"
и ваш результат с помощью StringBuilder
.