как правильно выводить строки с числом

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);
        }
    }
}
→ Ссылка