-
-
-
Witam potrzebuję pomocy w jednym programie wykorzystującym kolejki, wyjątki i kilka metod. Większośc programu już mam brkuje mi tylko uzupełnić 3 metody IsEmpty(), isFull(), dequeue() i size (). Czy pomógłby mi ktoś kto sie odbrze zna na javie wykończyć ten program?? Ja dopiero się uczę, w pierwszy semestrze javy wogóle nie miałem, jedynie C++.
Aha no i program ten tworze w NetBeans-ie
Treść zadania: http://wyslijto.pl/plik/z6lr8qkggc
Program który zrobiłem (jest nie pełny o te metody, ale są tam miejsca na wypełnienie ):
---------------------------------------------------- Tyle zdążyłem zrobić w weekend
package kolejki;
import java.util.logging.Level;
import java.util.logging.Logger;
class Wyjatek extends Exception { // tworzenie wlasnego wyjatku
}
class Kolejka1 {
Object tab[]; // zdefinowany wskaźnik na tablice
int poczatek, koniec;
public Kolejka1() { // konstruktor (domyślny) tworzący nowy obiekt
tab = new Object[10];
poczatek = -1;
koniec = -1;
}
public Kolejka1 (int rozmiar) throws Wyjatek { // konstruktor z parametrem, aby stworzyc kolejke o dowolnej długosci
if (rozmiar>1000000)
wyrzucWyjatek();
poczatek = -1;
koniec = -1;
tab = new Object [rozmiar];
}
void wyrzucWyjatek () throws Wyjatek { // wyrzuca wyjątek, tutaj w razie przkroczenia wartości miliona
throw new Wyjatek ();
}
void enqueue(Object value) throws Wyjatek{
if (koniec == poczatek -1)
{
wyrzucWyjatek ();
}
if ((poczatek == 0) && (koniec == (tab.length -1)))
{
wyrzucWyjatek();
}
if (koniec == tab.length -1)
{
tab[0] = value; // nowy elemnt wstawiany na koniec kolejki ale poczatek tablicy
koniec =0; // koniec kolejki wchodzi na początek tablicy
} else {
tab[koniec+1]=value;
koniec ++;
}
}
void dequeue(){ // Tutaj mi brakuje
}
void size(){ // Tutaj mi brakuje
}
void isEmpty(){ // Tutaj mi brakuje
}
void isFull(){ // Tutaj mi brakuje
}
}
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try {
Kolejka1 k = new Kolejka1(1000000); // tutaj wpisujemy dlugosc kolejki
} catch (Wyjatek ex) {
System.out.println("Tablica nie może być większa niż milion");
}
}
}
Może znalazłby się ktoś kto by mi pomógł... Program muszę wysłać do środy 8ego kwietnia (godzina 24.00).
Dzięki za pomoc
[ Dodano: 2009-04-08, 00:12 ]
Jeszcze żeby ten kod programu był bardziej czytelny, to jest on w notatniku pod tym linkiem :
http://wyslijto.pl/plik/l78gqbgk7t
a treść laboratorium pod tym:
http://wyslijto.pl/plik/z6lr8qkggc
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Może tak?
Kod: |
Object dequeue() throws Wyjatek {
if (pusta()) wyrzucWyjatek();
else {
int i=poczatek;
while (tab[i]==null) i++;
Object ob=tab[i];
tab[i]=null;
poczatek=i+1;
return ob;
}
}
int size(){
return koniec-poczatek+1;
}
boolean isEmpty(){
return poczatek<0 || poczatek>koniec;
}
|
a żeby napisać isFull() to chyba należy gdzieś zapamiętać początkową wielkość tablicy.
_________________ Im lepiej widać piersi, tym trudniej zapamiętać twarz.
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Być może będzie ok. No jeśli chodzi o to isEmpty i size () to podobnie kombinowałem bo to nie są jakieś złożone metody, Empty jedynie sprawdza czy kolejka/tablica nie jest pusta a isFull czy pełna
d41d8cd98f00b204e9800998ecf8427e
-
-
-
a dlaczego tworzysz funkcję wyrzucWyjatek() zamiast po prostu wyrzucić ten wyjątek?
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Bardzo podobne zadanie miałem na laby, mimo wszystko tamto rozwiązanie było nieefektywne i zbyt skomplikowane, więc poprzerabiałem i pokomentowałem. Wrzucam całość, bo cząstkowo byłoby zapewne niezrozumiałe i niekompletne:
Interfejs Queue:
http://paste.bradleygill....p?paste_id=8471
Klasa Kolejka:
http://paste.bradleygill....p?paste_id=8472
Klasa głowna, czyli demonstracja:
http://paste.bradleygill....p?paste_id=8473
Wyjątków jeszcze nie przerabiałem, mimo to utworzyłem 2 klasy EmptyQueueException i FullQueueException z powodu braku takowo brzmiących w bibliotece standardowej.
Po odpaleniu programu leci wyjątek, ale tak ma być w końcu.
Pozdrawiam.
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Zibo, cześc, a powiedz mi, te kody programu co mi napisałeś to one napewno działają?? Przepuisałem to do BluEJ, mam w ten sposób trzy klas y tam powiązane ze sobą jakiemis strzałkami, jedna to ten interface Queue i dwie : Kolejka i Main
Tylko jak to odpalam to nic sie nie robi, może złe relacje są. Nie rozumiem do końca jak działa ten programik, bo dopiero od niedawna mam z nim styczność... A t w czym piszesz?
d41d8cd98f00b204e9800998ecf8427e
-
-
-
BlueJ nie używam i nigdy nie używałem. Ja piszę w NetBeans. Te trzy linki to zawartości 3-ech plików źródłowych .java o nazwach takich, jak owe klasy. Nie wiem jak to wygląda w BlueJ, ale ogólnie wystarczy dodać do projektu te 3 klasy i wkleić powyższy kod do każdej.
Umieściłem je w pakiecie 'kolejka', więc i w takim katalogu powinny się znajdować w projekcie.
Jeśli Ci to pomoże, mogę zuploadować cały projekt z NetBeans'a.
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Zibo, No to jak możesz to może mi to w netbeansie całe wysłąć to sobie zobacze, bo wsadziłęm to do blueJ to niby działa ale wywala w jedny miejscu błąd i nie wiem jak go obejść:P a Net Beansa tez mam, dopiero się go ucze Ale w nim robiłem to co zamieściłem na forum.,..
d41d8cd98f00b204e9800998ecf8427e
-
-
-
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Identyczny program, przy użyciu klas generycznych, realizowaliśmy na laboratoriach u Suszko.
W razie jakbyś miał wątpliwości to w mojej aplikacji klasa ArrayQueue odpowiada Twojemu programowi.
http://rapidshare.com/fil...7/lab4.zip.html
Pozdrawiam
d41d8cd98f00b204e9800998ecf8427e
Powered by phpBB modified by Przemo © 2003 phpBB Group. Then, after many years modified again, this time by Piotrek © 2014 Strona wygenerowana w 34,4ms. Zapytań do SQL: 15
|