Stoper w Javie

0

Witam,

Muszę napisać zadaną klasę, co dla mnie jest zupełną nowością, a muszę z zadania się wywiązać. Po przeczytaniu zadania stwierdziłem, że to nie są podstawy (może się mylę), w każdym razie po przeczytaniu 2 pierwszych rozdziałów książki o Javie nie wiem dalej co się dzieje. Na pewno do tego dojdę ale w następnych rozdziałach, a programu niestetety potrzebuje na już...

Napisz klasę Stoper, której zadaniem jest możliwie jak najdokładniejsze mierzenie czasu zdarzeń. Dostępne mają być metody:

boolean start(String nazwa) – rozpoczęcie pomiaru czasu zdarzenia nazwa.
boolean stop(String nazwa) – koniec pomiaru czasu zdarzenia nazwa.
boolean pause(String nazwa) – wstrzymywanie naliczania czasu.
boolean remove(String nazwa) – usunięcie podanego zdarzenia.
boolean resume(String nazwa) – wznowienie naliczania czasu dla zadania nazwa.
int showTime(String nazwa) – podanie naliczonego czasu

Wszystkie metody zwracające wartość boolowską oddają false, gdy wykonanie danej metody
jest niemożliwe np. brak zdarzenie o podanej nazwie i true w przypadku przeciwnym.

Bardzo proszę o pomoc. Byłoby prościej gdyby ćwiczeniowiec w ogóle zrobił jakikolwiek wstęp do Javy, ale niestety takowego nie było, a w książce nie doszedłem widać do odpowiednich rzeczy jeszcze.

0

Użyj ArrayList, której elementami będzie String. Przy wywoływaniu metod przejedź pętlą for po wszystkich elementach i ustal, czy taki jest już w kontenerze. Co do dokładności to myślę, że milisekundy powinny wystarczyć. Jak dalej będziesz miał jakieś pytania to pisz na forum. Pomożemy :D
Pozdrawiam

0

Po co uczyć się od początku źle i używać listy, gdzie idealnie nadaje się mapa?

Musisz zaimplementować dwie klasy:
-Stoper przechowująca informacje o pojedynczym pomiarze
-StopersGroup zawierająca wszystkie stopery

public class Stoper {
	long startT, stopT, pauseStartT, allPausesT = (long) 0; /* czas startu, stopu, rozpoczecia pauzy, suma wszystkich pauz */ 
	boolean stoped = false; /* czy pomiar jest skonczny */
	boolean paused = false; /* czy aktualnie stoper jest zatrzymany */
	
	Stoper(){
		start();		
	}
	
	/* implementacja funkcji start, stop, pause, resume, showTime - mam nadzieje, ze nie bedziesz mial z tym problemu, do pobierania aktualnego czasu sluzy funkcja System.currentTimeMillis()  */
}
public class StopersGroup {
	Map<String, Stoper> stopers = new HashMap<String, Stoper>(); /* zawiera nasze stopery */
	
	boolean start(String s){
		if (stopers.get(s) != null) return false; /* juz jest taki stoper */
		stopers.put(s, new Stoper());
		return true;		
	}
	
	boolean stop(String s){
		Stoper stoper = stopers.get(s);
		if (stoper == null) return false; 
		return stoper.stop();		
	}
	
	int showTime(String s){
		Stoper stoper = stopers.get(s);
		if (stoper == null) return 0; 
		return (int)stoper.showTime();		
	}
	
	boolean pause(String s){
		Stoper stoper = stopers.get(s);
		if (stoper == null) return false; 
		return stoper.pause();		
	}
	
	boolean resume(String s){
		Stoper stoper = stopers.get(s);
		if (stoper == null) return false; 
		return stoper.resume();		
	}
	
	boolean remove(String s){
		return (stopers.remove(s) != null);
	}
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1