package com.javarush.task.task16.task1617;
/*
Отсчет на гонках
*/
public class Solution {
public static volatile int numSeconds = 3;
public static void main(String[] args) throws InterruptedException {
RacingClock clock = new RacingClock();
Thread.sleep(3500);
clock.interrupt();
//add your code here - добавь код тут
}
public static class RacingClock extends Thread {
public RacingClock() {
start();
}
public void run() {
try{
for (int i = 0; i < numSeconds; i++) {
Thread.sleep(1000);
if(numSeconds == 0){
System.out.print("Марш!");}
System.out.print(numSeconds-- +" ");
}
}
catch (InterruptedException e){
System.out.println("Прервано!");
}
//add your code here - добавь код тут
}
}
}
Серега Пластун
25 уровень
в чем тут ошибка?
Решен
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia Volkova Java Developer в DXC Master
2 января 2020, 20:05
Сделай сначала print, а потом уже sleep
0
Серега Пластун
2 января 2020, 20:13
package com.javarush.task.task16.task1617;
/*
Отсчет на гонках
*/
public class Solution {
public static volatile int numSeconds = 3;
public static void main(String[] args) throws InterruptedException {
RacingClock clock = new RacingClock();
Thread.sleep(3500);
clock.interrupt();
//add your code here - добавь код тут
}
public static class RacingClock extends Thread {
public RacingClock() {
start();
}
public void run() {
try{
for (int i = 0; i < numSeconds; i++) {
if(numSeconds == 0){
System.out.print("Марш!");}
System.out.print(numSeconds-- +" ");
Thread.sleep(1000);
}
}
catch (InterruptedException e){
System.out.println("Прервано!");
}
//add your code here - добавь код тут
}
}
}
0
Серега Пластун
2 января 2020, 20:14
ничего не изменилось пишет 3 2 и все программа завершается с кодом 0
0
Ksenia Volkova Java Developer в DXC Master
2 января 2020, 20:16полезный
А, так у тебя цикл неправильный: i каждый раз увеличивается, а numSeconds уменьшается.
Поэтому цикл завершится раньше, чем наступит interrrupt()
+1
Серега Пластун
2 января 2020, 20:31решение
Спасибо за наводку!
после "Марш" нужно было еще выйти из цикла что бы не сработал catch.
и выводить отсчет нужно в этом же цикле if else, а вот как раз else я пропустил))
+2
Серега Пластун
2 января 2020, 20:36
с дебагером не могу разобраться, может подскажешь какой то Гайд достойный внимания?
0
Ksenia Volkova Java Developer в DXC Master
3 января 2020, 10:09полезный
Про гайд не знаю. В основном, там все просто - ставишь брейк-пойнты в нужных местах, когда остановится - можно смотреть, что у тебя в переменных находится. Стрелочками можно двигаться дальше по шагам или вглубь методов.
+1