-
👋 Witaj na MPCForum!
Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎
- ✅ Pełny dostęp do działów i ukrytych treści
- ✅ Możliwość pisania i odpowiadania w tematach
- ✅ System prywatnych wiadomości
- ✅ Zbieranie reputacji i rozwijanie swojego profilu
- ✅ Członkostwo w jednej z największych społeczności graczy
👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!
Zarejestruj się teraz
- 0

Pytanie
Ancyrafi
Ancyrafi
Cześć mam taki mały problem z kodem:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Timer czas = new Timer();
TimerTask zd = new TimerTask(){
public void run(){
int hp = 10;
do{
Random los = new Random();
int pc = 1 + los.nextInt(4);
System.out.println("5 sek");
String odp = sc.nextLine();
switch(odp){
case "atk":
hp = hp - pc;
System.out.println("hp spadlo o " + pc + "wynosi" + hp);
default:
hp = hp + pc;
System.out.println("zle hp wzroslo o " + pc);
}
}while(hp>0);
System.out.println("pokonany ");
czas.cancel();
};
};
System.out.println("5sek");
czas.schedule(zd, 5 * 1000);
}
}
Problem polega na tym, że gdy upłynie czas dla wpisującego polecenie, uruchamia się metoda void run, i teraz co muszę zrobić aby po uruchomieniu tej metody , powrócić z powrotem do pętli? Ponieważ uruchomienie metody void run automatycznie blokuje mi pętle, czas się nie nalicza od nowa , jak i użytkownik nie dostaje polecenia że ma 5 sekund.
Co próbowałem?
Stworzyłem 2 różne metody i wywoływałem je na zmianę np metdoa1("asd");
Program powracał do pętli , ale się bugował i co chwilę wyskakiwał timertask jak i nie można było wpisać polecenia,
System.exit całkowicie zamyka program nie ma powrotu do pętli
Return; nie działa
Jak mogę to rozwiązać?
Miałem jeszcze pomysł, ponieważ kiedy odpalona jest metoda void run, to scanner działa, i jeśli tylko wpisze np atk to wtedy ładnie przechodzi do pętli i wszystko działa. I może jest jakiś sposób np żeby wymusić przez console wpisanie do Scanner np dana komendę? Jeśli tak to w jaki sposób?
Próbowałem System.console().writer..
Ale nie działa
2 odpowiedzi na to pytanie
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Zaloguj się poniżej.
Zaloguj się