как правильно выводить строки с числом
int s = 0; String seconds = String.format("%02d", s);
int m = 0; String minutes = String.format("%02d", m);
int h = 0; String hours = String.format("%02d", h);
session.sendMessage(new TextMessage(hours+":"+minutes+":"+seconds));
while (s<=60) {
Thread.sleep(1000);
s++;
session.sendMessage(new TextMessage(hours+":"+minutes+":"+seconds));
}
if (s<60);
m++;
s = 00;
Thread.sleep(1000);
session.sendMessage(new TextMessage(hours+":"+minutes+":"+seconds));
Хотел сделать, что бы выводило 00:00:00, выводит как надо, но теперь не меняется значение секунд, что не так? Без перевода в строку все работает.
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
У вас внутри цикла while значение переменной s меняется, но текст seconds, который вы отправляете, сформирован до цикла, и значение переменной s на него никак не влияет.
В принципе, не понятно зачем три раза делать String.format, потом склеивать строки, если можно сразу через format сформировать готовую строку, и ее вывести:
int s = 0;
int m = 0;
int h = 0;
while (s<60) {
session.sendMessage(new TextMessage(String.format("%02d:%02d:%02d", h, m, s)));
Thread.sleep(1000);
s++;
}
Я бы использовал for вместо while и вывод и задержку только в самом внутреннем цикле:
for (int h = 0; h < 60; h++) {
for (int m = 0; m < 60; m++) {
for (int s = 0; s < 60; s++) {
session.sendMessage(new TextMessage(
String.format("%02d:%02d:%02d", h, m, s)));
Thread.sleep(1000);
}
}
}