You are on page 1of 12

Liste

Zadatak 1 Napraviti javnu klasu Student koja ima: Privatni atribut brojIndeksa koji je dat u formi Stringa: XXXX/BB gde je XXXX broj indeksa a BB godina upisa, npr. 0067/07, 0123/03, 0001/99. Privatni atribut ime. Privatni atribut prezime. Privatni atribut ocena. Odgovarajue javne get i set metode za ova tri atributa. Nedozvoljene vrednosti za ime, prezime i broj indeksa se null Stringovi. Nedozvoljene vrednosti za ocenu su svi brojevi manji od 5 ili vei od 10. U sluaju pokuaja unosa ovih nedozvoljenih vrednosti potrbno je ispisati poruku o greci na ekranu. Redefinisanu metodu toString klase Object koja vraa String sa svim podacima o studentu (broj indeksa, ime, prezime i ocena) uz odgovarajuu poruku. Redefinisanu metodu equals klase Object koja kao ulazni argument prima objekat klase Object, ali se smatra da e se zaista unositi objekti klase Student. Metoda vraa TRUE ako je broj indeksa jednak broju indeksa studenta koji je unet kao ulazni argument, a u suprotnom FALSE. Napraviti javnu klasu IspitnaLista koja ima: Privatni atribut studenti koji predstavlja listu objekata klase Student. Javni konstruktor koji inicijalizuje ovu listu (atribut studenti). Javnu metodu daLiJeUListi koja kao ulazni argument prima objekat klase Student i proverava da li se student sa istim brojem indeksa ve nalazi u listi. Ako se nalazi, metoda vraa TRUE a u suprotnom FALSE. Javnu metodu dodajStudenta koja kao ulazni argument prima objekat klase Student i dodaje ga u listu. Dodavanje se vri samo ako ulazni argument nije null i ako u listi ne postoji student sa istim brojem indeksa. Ako je bilo koji od ovih uslova prekoraen, potrebno je ispisati poruku o greci na ekranu. Javnu metodu dodajStudentaNaPoetak koja kao ulazni argument prima objekat klase Student i dodaje ga u listu i to na poetak liste. Dodavanje se vri samo ako ulazni argument nije null i ako u listi ne postoji student sa istim brojem indeksa. Ako je bilo koji od ovih uslova prekoraen, potrebno je ispisati poruku o greci na ekranu. Javnu metodu dodajStudentaNaKraj koja kao ulazni argument prima objekat klase Student i dodaje ga u listu i to na kraj liste. Dodavanje se vri samo ako ulazni argument nije null i ako u listi ne postoji student sa istim brojem indeksa. Ako je bilo koji od ovih uslova prekoraen, potrebno je ispisati poruku o greci na ekranu. Javnu metodu dodajStudentaNaMesto koja kao ulazni argument prima objekat klase Student i redni broj mesta u listi na koje potrebno ubaciti datog studenta. Dodavanje se vri samo ako ulazni argument nije null, ako u listi ne postoji student sa istim brojem indeksa i ako je uneti redni broj u rasponu 0 duina liste-1. Ako je bilo koji od ovih uslova prekoraen, potrebno je ispisati poruku o greci na ekranu. Javnu metodu izbrisiStudenta koja kao ulazni argument prima objekat klase Student i brie iz liste studenta sa istim brojem indeksa. Brisanje se vri samo ako ulazni argument nije null i ako u listi postoji student sa istim brojem indeksa. Ako je bilo koji od ovih uslova prekoraen, potrebno je ispisati poruku o greci na ekranu. Javnu metodu izbrisiStudentaSaPocetka koja nema ulazne argumente i brie prvog studenta iz liste. Brisanje se vri samo ako lista nije prazna. Ako je lista prazna, potrebno je ispisati poruku o greci na ekranu. Javnu metodu izbrisiStudentaSaKraja koja nema ulazne argumente i brie poslednjeg studenta iz liste. Brisanje se vri samo ako lista nije prazna. Ako je lista prazna, potrebno je ispisati poruku o greci na ekranu. Javnu metodu izbrisiStudentaSaMesta koja kao ulazni argument dobija redni broj i brie studenta iz liste koji je na tom rednom broju u listi. Brisanje se vri samo ako lista nije prazna i ako je redni broj u opsegu 0 duina liste-1. Ako bilo koji od ova dva uslova prekoraen, potrebno je ispisati poruku o greci na ekranu. Javnu metodu obrisiListu koja brie sve studente iz liste. Javnu metodu ispisiPrvog koja na ekranu ispisuje podatke prvog studenta iz liste. Ako je lista prazna, potrebno je ispisati poruku o tome. Javnu metodu ispisiPoslednjeg koja na ekranu ispisuje podatke poslednjeg studenta iz liste. Ako je lista prazna, potrebno je ispisati poruku o tome. Javnu metodu ispisi koja ispisuje sve studente iz liste tj. njihove podatke na ekranu. Javnu metodu ispisiDesetke koja na ekranu ispisuje samo podatke o onim studentima koji su na ispitu dobili ocenu 10. Javnu metodu prosek koja izraunava i vraa prosenu ocenu na ispitu. Javnu metodu ispisiStareStudente koja ispisuje podatke samo onih studenata koji su 1999. godine upisali

fakultet. Napraviti javnu klasu TestIspitnaLista koja kreira jedan objekat klase IspitnaLista i unosi u njega sledee studente: 0001/99 Stevanovic Ivana 10, 0123/06 Petar Petrovic 6, 0021/05 Jovan Jovanovic 8. Ispisati na ekranu prosenu ocenu i sve stare studente. Reenje
public class Student { private private private private String brojIndeksa; String ime; String prezime; int ocena;

public int getOcena() { return ocena; } public void setOcena(int ocena) { if (ocena >=5 && ocena<=10) this.ocena = ocena; else System.out.println("Greska"); } public String getBrojIndeksa() { return brojIndeksa; } public void setBrojIndeksa(String brojIndeksa) { if (brojIndeksa != null) this.brojIndeksa = brojIndeksa; else System.out.println("Greska"); } public String getIme() { return ime; } public void setIme(String ime) { if (ime != null) this.ime = ime; else System.out.println("Greska"); } public String getPrezime() { return prezime; } public void setPrezime(String prezime) { if (prezime != null) this.prezime = prezime; else System.out.println("Greska"); } public String toString(){ return "Br.ind.: "+brojIndeksa+" Ime: "+ime+" Prezime: "+prezime+" Ocena: "+ocena; } public boolean equals(Object o){ Student s = (Student)(o); if (brojIndeksa.equals(s.getBrojIndeksa())) return true; else return false;

} }

import java.util.LinkedList; public class IspitnaLista { private LinkedList <Student> studenti; public IspitnaLista(){ studenti = new LinkedList <Student> (); } public boolean daLiJeUListi(Student s){ return studenti.contains(s); } public void dodajStudenta(Student s){ if (s!=null && !studenti.contains(s)) studenti.add(s); else System.out.println("Greska"); }

public void dodajStudentaNaPocetak(Student s){ if (s!=null && !studenti.contains(s)) studenti.addFirst(s); else System.out.println("Greska"); } public void dodajStudentaNaKraj(Student s){ //Metode add i addLast su ekvivalentne jer obe dodaju element na kraj liste if (s!=null && !studenti.contains(s)) studenti.addLast(s); else System.out.println("Greska"); } public void dodajStudentaNaMesto(Student s, int redBr){ //Metoda add(int,Student) unosi element na i-tu poziciju u listu a svi ostali //elementi liste se pomeraju za jedno mesto udesno. Indeksi elemenata //liste pocinju od nule. Duzina liste se dobija pozivom metode size(). if (s!=null && !studenti.contains(s) && redBr>=0 && redBr<studenti.size()) studenti.add(redBr,s); else System.out.println("Greska"); } public void izbrisiStudenta(Student s){ if (s!=null && studenti.contains(s)) studenti.remove(s); else System.out.println("Greska"); } public void izbrisiStudentaSaPocetka(){ if (studenti.size()>0) studenti.removeFirst(); else System.out.println("Greska"); } public void izbrisiStudentaSaKraja(){ if (studenti.size()>0) studenti.removeLast(); else System.out.println("Greska"); } public void izbrisiStudentaSaMesta(int redBr){ if (studenti.size()>0 && redBr>=0 && redBr<studenti.size()) studenti.remove(redBr); else System.out.println("Greska"); } public void obrisiListu(){ studenti.clear(); } public void ispisiPrvog(){ if (studenti.size()>0) System.out.println(studenti.getFirst()); else System.out.println("Lista studenata je prazna"); } public void ispisiPoslednjeg(){ if (studenti.size()>0) System.out.println(studenti.getLast()); else System.out.println("Lista studenata je prazna"); } public void ispisi(){ for (int i=0; i< studenti.size(); i++) System.out.println(studenti.get(i)); } public void ispisiDesetke(){ for (int i=0; i< studenti.size(); i++) if (studenti.get(i).getOcena() == 10) System.out.println(studenti.get(i)); } public double prosek(){ double suma = 0; for (int i=0; i< studenti.size(); i++)

suma = suma + studenti.get(i).getOcena(); } return suma/studenti.size();

public void ispisiStareStudente(){ for (int i=0; i< studenti.size(); i++){ String brInd = studenti.get(i).getBrojIndeksa(); String god = brInd.substring(5); if (god.equals("99")) System.out.println(studenti.get(i)); } } } public class TestIspitnaLista { public static void main(String args[]){ IspitnaLista il = new IspitnaLista(); Student s1 = new Student(); s1.setBrojIndeksa("0001/99"); s1.setIme("Ivana"); s1.setPrezime("Stevanovic"); s1.setOcena(10); Student s2 = new Student(); s2.setBrojIndeksa("0123/06"); s2.setIme("Petar"); s2.setPrezime("Petrovic"); s2.setOcena(6); Student s3 = new Student(); s3.setBrojIndeksa("0021/05"); s3.setIme("Jovan"); s3.setPrezime("Jovanovic"); s3.setOcena(8); il.dodajStudenta(s1); il.dodajStudenta(s2); il.dodajStudenta(s3); System.out.println("Prosecna ocena je: "+il.prosek()); il.ispisiStareStudente(); } }

Zadatak 2 Napraviti javnu klasu Motocikl koja ima: Privatni atribut marka. Privatni atribut model. Privatni atribut kubikaza koji predstavlja broj kubika motocikla (ceo broj). Odgovarajue get i set metode za ove atribute. Redefinisanu toString metodu klase Object koja vraa String sa svim podacima o motociklu uz odgovarajuu poruku. Redefinisanu equals metodu klase Object koja kao ulazni argument prima objekat klase Object, ali se smatra da e se zaista unositi objekti klase Motocikl. Ova metoda vraa true ako je vrednost atributa marka, model i kubikaza jednaka marki, modelu i kubikazi motocikla koji je unet kao ulazni argument. U suprotnom, metoda vraa false. Napraviti javnu klasu BazaMotocikala koja ima: Privatni atribut motocikli koji predstavlja listu objekata klase Motocikl. Javni konstruktor koji inicijalizuje atribut motocikli. Javnu metodu daLiJeUBazi koja kao ulazni argument prima objekat klase Motocikl i proverava da li se isti motocikl ve nalazi u bazi. Javnu metodu unesiUBazu koja kao ulazni argument prima objekat klase Motocikl i unosi ga u listu. Unoenje se vri samo ako uneta vrednost nije null i ako u bazi ve ne postoji isti motocikl. Javnu metodu izbaciIzBaze koja kao ulazni argument prima objekat klase Motocikl i brie ga iz baze. Brisanje

se vri samo ako u bazi postoji isti motocikl. Javnu metodu ispisi koja na ekranu ispisuje podatke o svim motociklima. Javnu metodu ispisiKawasaki koja ispisuje na ekranu podatke samo onih motocikala koji su marke Kawasaki. Javnu metodu maxKubikaza koja vraa najveu kubikau motocikla iz liste. Javnu metodu prosecnaKubikaza koja izraunava i vraa prosenu kubikau motocikala iz baze. Javnu metodu ispisiNajveci koja na ekranu ispisuje podatke o motociklu sa najveom kubikazom.

Napraviti klasu TestBazaMotocikala koja kreira objekat klase BazaMotockala i tri objekta klase Motocikl :Honda CB 750 F - 748, Kawasaki - ER 5 - 498 i Honda - CB 750 F - 748. Potrebno je prva dva objekta ubaciti u bazu i ispisati sadraj baze. Nakon toga, potrebno je proveriti da li se trei motocikl ve nalazi u bazi i izbaciti ga iz baze. Ponovo na ekranu ispisati sadraj baze i ispisati sve motocikle marke Kawasaki. Reenje
public class Motocikl { private String marka; private String model; private int kubikaza; public int getKubikaza() { return kubikaza; } public void setKubikaza(int kubikaza) { this.kubikaza = kubikaza; } public String getMarka() { return marka; } public void setMarka(String marka) { this.marka = marka; } public String getModel() { return model; } public void setModel(String model) { this.model = model; } public String toString(){ return "Marka: "+marka+" Model: "+model+" Kubikaza: "+kubikaza; } public boolean equals(Object o){ Motocikl m = (Motocikl)(o); if (marka.equals(m.getMarka())&& (model.equals(m.getModel()))&& kubikaza == m.getKubikaza()) return true; else return false;

} }

import java.util.*; public class BazaMotocikala { private LinkedList <Motocikl> motocikli; public BazaMotocikala(){ motocikli = new LinkedList <Motocikl> (); } public boolean daLiJeUBazi(Motocikl m){ return motocikli.contains(m); } public void unesiUBazu(Motocikl m){ //Umesto daLiJeUBazi(m) moze da stoji i direktno //motocikli.contains(m). if (daLiJeUBazi(m)) System.out.println("Taj motocikl se vec nalazi u bazi"); else motocikli.add(m); }

public void izbaciIzBaze(Motocikl m){ if (!daLiJeUBazi(m)) System.out.println("Taj motocikl se ne nalazi u bazi"); else { motocikli.remove(m); } } public void ispisi(){ for (int i=0; i<motocikli.size();i++) System.out.println(motocikli.get(i)); } public void ispisiKawasaki(){ for (int i=0; i<motocikli.size();i++) if (motocikli.get(i).getMarka().equals("Kawasaki")) System.out.println(motocikli.get(i)); } public int maxKubikaza(){ int maxK = 0; for (int i=0; i<motocikli.size();i++) if (motocikli.get(i).getKubikaza() > maxK) maxK = motocikli.get(i).getKubikaza(); return maxK; } public int prosecnaKubikaza(){ int suma = 0; for (int i=0; i<motocikli.size();i++) suma += motocikli.get(i).getKubikaza(); return suma/motocikli.size(); } public void ispisiNajveci(){ int maxK = maxKubikaza(); for (int i=0; i<motocikli.size();i++) if (motocikli.get(i).getKubikaza() == maxK){ System.out.println(motocikli.get(i)); //Moze i bez break naredbe, ali je ovako metoda efikasnija jer //kad nadje odgovarajuci motocikl, ispisuje ga i ne proverava dalje // - break naredba prekida for petlju. break; } } } public class TestBazaMotocikala { public static void main(String[] args){ BazaMotocikala b = new BazaMotocikala(); Motocikl m1 = new Motocikl(); m1.setMarka("Honda"); m1.setModel("CB 750 F"); m1.setKubikaza(748); Motocikl m2 = new Motocikl(); m2.setMarka("Kawasaki"); m2.setModel("ER 5"); m2.setKubikaza(498); b.unesiUBazu(m1); b.unesiUBazu(m2); Motocikl m3 = new Motocikl(); m3.setMarka("Honda"); m3.setModel("CB 750 F"); m3.setKubikaza(748); b.ispisi(); System.out.println("Da li postoji "+b.daLiJeUBazi(m3));

b.izbaciIzBaze(m3); b.ispisi(); b.ispisiKawasaki(); } }

Zadatak 3 Napraviti javnu klasu ReliEkipa koja ima: Privatni atribut imeEkipe. Privatni atribut brojPoena (ceo broj) koji predstavlja broj poena koji je ta reli ekipa osvojila u ampionatu. Odgovarajue javne get i set metode za ova dva atributa. Ime ekipe ne moe da bude null, a broj poena mora da bude nula ili vei od nule. Ako je bilo koje od ovih ogranienja prekoraeno, ispisati poruku o greci na ekranu. Redefinisanu toString metodu klase Object koja vraa String u kome se nalaze svi podaci o ekipi uz odgovarajuu poruku. Redefinisanu equals metodu klase Object koja kao ulazni argument prima objekat klase Object, ali se smatra da e se zaista unositi objekti klase ReliEkipa. Prvo, potrebno je proveriti da li je zaista unet objekat klase ReliEkipa, pa ako nije vratiti false. Ako je unet objekat klase ReliEkipa, ova metoda vraa true ako je vrednost atributa imeEkipe jednaka imenu ekipe objekta koji je unet kao ulazni argument. U suprotnom, metoda vraa false. Napraviti javnu klasu ReliRangLista koja predstavlja listu rezultata reli ekipe. Ova klasa ima: Privatni atribut ekipe koji predstavlja listu objekata klase ReliEkipa. Ovaj atribut je potrebno inicijalizovati odmah. Javnu metodu za unoenje reli ekipe u listu. Ova metoda kao ulazni argument prima objekat klase ReliEkipa i unosi ga u listu samo ako u listi ve ne postoji ekipa sa istim imenom i ako ulazni argument nije null. U suprotnom, ispisuje se poruka o greci. Unoenje se vri tako da se ne poremeti opadajui poredak: lista je ureena tako da se na prvom mestu nalazi ekipa sa najvie poena, na drugom prva ekipa sa manje poena itd. Znai, novu ekipu treba uneti tako da lista i posle unoenja ostane ureena. Ako ekipa ima najmanje poena od svih ekipa, unosi se na kraj liste. Javnu metodu koja na ekranu ispisuje celu reli rang listu. Potrebno je ispisati i poziciju svake ekipe pri emu pozicije kreu od 1 a ne od nula. Javnu metodu koja na ekranu ispisuje celu reli rang listu ali u obrnutom redosledu prvo se ispisuju najslabije ekipe. Potrebno je ispisati i poziciju svake ekipe pri emu pozicije kreu od 1 a ne od nula. Javnu metodu koja na ekranu ispisuje deset najboljih reli ekipa zajedno sa informacijom o njihovoj poziciji. Broj pozicije kree od 1 a ne od nula. Javnu metodu koja menja poziciju reli ekipe na listi. Metoda kao ulazni argument dobija objekat klase ReliEkipa koji sadri novi broj poena za datu ekipu. Potrebno je iz liste obrisati objekat klase ReliEkipa koji predstavlja istu ekipu, ali sa starim brojem poena, pa tek onda uneti objekat koji predstavlja novi broj poena. Ovo se vri tako da lista ostane ureena i posle zamene. Zamena se vri samo ako je uneti objekat razliit od null i ako se istoimena ekipa ve nalazi u listi. Napraviti javnu klasu TestReliRangLista koja kreira jedan objkat klase ReliRangLista i u njega unosi sledee podatke o ekipama: Audi 30 poena, BMW 40 poena, Renault 20 poena, VW 5 poena, Subaru 30 poena, Peugeot 33 poena, Ford 50 poena, Mitsubishi 4 poena, Lancia 23 poena, Skoda 15 poena i Seat 0 poena. Ispisati na ekranu celu listu u obinom i obrnutom redosledu, a zatim prvih deset ekipa. Zameniti podatke o BMW ekipi tako da novi broj poena bude 55. Ponovo ispisati celu listu na ekranu. Reenje
public class ReliEkipa { private String imeEkipe; private int brojPoena; public int getBrojPoena() { return brojPoena; } public void setBrojPoena(int brojPoena) { if (brojPoena >= 0) this.brojPoena = brojPoena; else System.out.println("Greska"); }

public String getImeEkipe() { return imeEkipe; } public void setImeEkipe(String imeEkipe) { if (imeEkipe != null) this.imeEkipe = imeEkipe; else System.out.println("Greska"); } public String toString(){ return "Ekipa: "+imeEkipe+" Poeni: "+brojPoena; } public boolean equals (Object o){ if (o instanceof ReliEkipa) { ReliEkipa r=(ReliEkipa)(o); if (imeEkipe.equals(r.getImeEkipe())) return true; else return false; } else return false; } } import java.util.LinkedList; public class ReliRangLista { private LinkedList <ReliEkipa> ekipe = new LinkedList <ReliEkipa>(); public void unesiEkipu(ReliEkipa r){ if (r!=null && !ekipe.contains(r)){ for (int i=0; i<ekipe.size();i++) if (ekipe.get(i).getBrojPoena()<r.getBrojPoena()){ //Ekipa se unosi na i-to mesto gde je prva ekipa koja //ima manje poena od nje. Sve ostale ekipe se pomeraju //za jedno mesto nize na listi. ekipe.add(i, r); break; } //Ako ekipa ima najmanje poena od svih sa liste, ona nece biti //ubacena u okviru for petlje jer nije nadjena nijedna ekipa sa //manje poena od nje. Zato se na kraju proverava da li je ekipa //ubacena, pa ako nije, unosi se na kraj liste. if (!ekipe.contains(r)) ekipe.addLast(r); } else System.out.println("Greska");

public void ispisi(){ for(int i=0;i<ekipe.size();i++) System.out.println((i+1)+". "+ekipe.get(i)); } public void ispisiObrnuto(){ for(int i=ekipe.size()-1;i>=0;i--) System.out.println((i+1)+". "+ekipe.get(i)); } public void ispisiDesetNajboljih(){ for(int i=0;i<10;i++) System.out.println((i+1)+". "+ekipe.get(i)); } public void zameni (ReliEkipa r){ if (r!=null && ekipe.contains(r)){ ekipe.remove(r); unesiEkipu(r); } else System.out.println("Greska"); }

} public class TestReliRangLista { public static void main(String[] args) { ReliRangLista r = new ReliRangLista(); ReliEkipa re1 = new ReliEkipa(); re1.setImeEkipe("Audi"); re1.setBrojPoena(30); ReliEkipa re2 = new ReliEkipa(); re2.setImeEkipe("BMW"); re2.setBrojPoena(40); ReliEkipa re3 = new ReliEkipa(); re3.setImeEkipe("Renault"); re3.setBrojPoena(20); ReliEkipa re4 = new ReliEkipa(); re4.setImeEkipe("VW"); re4.setBrojPoena(5); ReliEkipa re5 = new ReliEkipa(); re5.setImeEkipe("Subaru"); re5.setBrojPoena(30); ReliEkipa re6 = new ReliEkipa(); re6.setImeEkipe("Peugeot"); re6.setBrojPoena(33); ReliEkipa re7 = new ReliEkipa(); re7.setImeEkipe("Ford"); re7.setBrojPoena(50); ReliEkipa re8 = new ReliEkipa(); re8.setImeEkipe("Mitsubishi"); re8.setBrojPoena(4); ReliEkipa re9 = new ReliEkipa(); re9.setImeEkipe("Lancia"); re9.setBrojPoena(23); ReliEkipa re10 = new ReliEkipa(); re10.setImeEkipe("Skoda"); re10.setBrojPoena(15); ReliEkipa re11 = new ReliEkipa(); re11.setImeEkipe("Seat"); re11.setBrojPoena(0); r.unesiEkipu(re1); r.unesiEkipu(re2); r.unesiEkipu(re3); r.unesiEkipu(re4); r.unesiEkipu(re5); r.unesiEkipu(re6); r.unesiEkipu(re7); r.unesiEkipu(re8); r.unesiEkipu(re9); r.unesiEkipu(re10); r.unesiEkipu(re11); r.ispisi(); r.ispisiObrnuto(); System.out.println("TOP 10"); r.ispisiDesetNajboljih(); ReliEkipa re12 = new ReliEkipa(); re12.setImeEkipe("BMW"); re12.setBrojPoena(55); r.zameni(re12); } r.ispisi();

Zadatak 4 Napraviti javnu klasu Takmicar koja ima: Privatni atribut zemlja koji predstavlja dravu porekla takmiara. Privatni atribut imePrezime. Privatni atribut vreme koji predstavlja vreme koje je takmiar ostvario na takmienju izraeno u sekundama (realan broj). Odgovarajue javne get i set metode za ove atribute. Nedozvoljene vrednosti za zemlju i imePrezime su null Stringovi. Vreme mora da bude nula ili vee od nule. Ako je uneto vreme nula, smatra se da je takmiar diskvalifikovan. U sluaju unoenja nedozvoljenih vrednosti, potrebno je na ekranu ispisati poruku o greci. Redefinisanu metodu toString klase Object koja vraa String sa svim podacima o takmiaru ako je vreme koje je ostvario vee od nule. Ako je vreme jednako nuli to znai da je takmiar diskvalifikovan. U tom sluaju String treba da sadri zemlju porekla ime, prezime, i re diskvalifikovan. Redefinisanu equals metodu klase Object koja kao ulazni argument prima objekat klase Object, ali se smatra da e se zaista unositi objekti klase Takmicar. Prvo, potrebno je proveriti da li je zaista unet objekat klase Takmicar, pa ako nije vratiti false. Ako je unet objekat klase Takmicar, ova metoda vraa true ako je vrednost atributa zemlja i imePrezime jednaka zemlji i imenu i prezimenu takmiara koji je unet kao ulazni argument. U suprotnom, metoda vraa false. Napraviti javnu klasu ListaRezultata koja ima: Privatni atribut takmicari koji predstavlja listu takmiara. Javni konstruktor koji inicijalizuje listu. Javnu metodu unesiTakmicara koja kao ulazni argument dobija objekat klase Takmicar i unosi ga u listu. Lista rezultata je ureena tako da se na poetku liste nalazi takmiar sa najmanjim vremenom pa za njim slede takmiari sa veim vremenom organzovani u rastuem poretku. Na kraju liste se nalaze takmiari koji su diskvalifikovani. Unoenje se vri samo ako ulazni argument nije null i ako ve ne postoji u listi. U suprotnom, ispisuje se poruka o greci. Unoenje je potrebno izvriti tako da lista ostane ureena i posle unoenja. Javnu metodu ispisi koja ispisuje na ekranu celu listu rezultata zajedno sa pozicijama takmiara (pozicije kreu od 1). Javnu metodu ispisiFinaliste koja ispisuje osam najboljih takmicara koji e da idu u finale. Ako se meu prvih osam nae neki takmiar koji je diskvalifikovan, metoda ga ne ispisuje. Ako u listi nema osam takmiara, ispisuje se koliko ih ima. Javnu metodu ispisiReprezentativce koja kao ulazni argument prima ime zemlje i ispisuje rezultate svih njenih reprezentativaca. Javnu metodu daLiJeOborenRekord koja kao ulazni argument prima vreme koje predstavlja svetski rekord. Metoda vraa TRUE ako je neki takmiar oborio rekord a FALSE ako rekord nije oboren. Pri poreenju treba razmatrati samo one takmiare koji nisu diskvalifikovani. Napraviti javnu klasu TestListaRezultata koja kreira jedan objekat klase ListaRezultata i u njega unosi podatke o sledeim takmiarima: Grcka Costas Pappas 23,1 , SAD Colin Firth 20.12, Rusija Ivan Ivanovic 19.05, Turska Mehmed Turk DISKVALIFIKOVAN, Velika Britanija John Pale 22.78 i SAD Jack Stone DISKVALIFIKOVAN. Ispisati sve takmiare, finaliste a ona i reprezentativce SAD. Ispisati i poruku o tome da li je oboren svetski rekord od 19.1. Reenje
public class Takmicar { private String zemlja; private String imePrezime; private double vreme; public String getImePrezime() { return imePrezime; } public void setImePrezime(String imePrezime) { if (imePrezime != null) this.imePrezime = imePrezime; else System.out.println("Greska"); } public double getVreme() { return vreme; } public void setVreme(double vreme) { if (vreme >= 0) this.vreme = vreme;

else System.out.println("Greska"); } public String getZemlja() { return zemlja; } public void setZemlja(String zemlja) { if (zemlja != null) this.zemlja = zemlja; else System.out.println("Greska"); } public String toString(){ if (vreme > 0) return "Zemlja: "+zemlja+" Takmicar: "+imePrezime+" Vreme: "+vreme; else return "Zemlja: "+zemlja+" Takmicar: "+imePrezime+" DISKVALIFIKOVAN"; } public boolean equals (Object o){ if (o instanceof Takmicar) { Takmicar t=(Takmicar)(o); if (zemlja.equals(t.getZemlja())&& imePrezime.equals(t.getImePrezime())) return true; else return false; } else return false; } } import java.util.LinkedList; public class ListaRezultata { private LinkedList <Takmicar> takmicari; public ListaRezultata(){ takmicari = new LinkedList <Takmicar> (); } public void unesiTakmicara (Takmicar t){ if (t!=null && !takmicari.contains(t)){ //Ako je takmicar diskvalifikovan, dodaje se //na kraj liste. if (t.getVreme()==0) takmicari.addLast(t); else{ for (int i=0;i<takmicari.size();i++) //Ako se nadje takmicar koji ima vece vreme od //unetog takmicara ili ako se naidje na diskvalifikovanog //takmicara, vrsi se unosenje. if (t.getVreme() < takmicari.get(i).getVreme() || takmicari.get(i).getVreme() == 0){ takmicari.add(i,t); break; } if (!takmicari.contains(t)) takmicari.addFirst(t); } } else System.out.println("Greska"); } public void ispisi(){ for (int i=0; i<takmicari.size();i++) System.out.println((i+1)+". "+takmicari.get(i)); } public void ispisiFinaliste(){ //Promenljiva max se uvodi za slucaj da u listi nema 8 takmicara int max = 8; if (max > takmicari.size()) max = takmicari.size(); for (int i=0; i<max;i++) if (takmicari.get(i).getVreme()!=0) System.out.println(takmicari.get(i));

} public void ispisiReprezentativce(String zemlja){ for (int i=0; i<takmicari.size();i++) if (takmicari.get(i).getZemlja().equals(zemlja)) System.out.println((i+1)+". "+takmicari.get(i)); } public boolean daLiJeOborenRekord(double vreme){ if (takmicari.getFirst().getVreme() > 0 && takmicari.getFirst().getVreme() < vreme) return true; else return false; } } public class TestListaRezultata { public static void main(String[] args) { ListaRezultata l = new ListaRezultata(); Takmicar t1 = new Takmicar(); t1.setZemlja("Grcka"); t1.setImePrezime("Costas Pappas"); t1.setVreme(23.1); Takmicar t2 = new Takmicar(); t2.setZemlja("SAD"); t2.setImePrezime("Colin Firth"); t2.setVreme(20.12); Takmicar t3 = new Takmicar(); t3.setZemlja("Rusija"); t3.setImePrezime("Ivan Ivanovic"); t3.setVreme(19.05); Takmicar t4 = new Takmicar(); t4.setZemlja("Turska"); t4.setImePrezime("Mehmed Turk"); t4.setVreme(0); Takmicar t5 = new Takmicar(); t5.setZemlja("Velika Britanija"); t5.setImePrezime("John Pale"); t5.setVreme(22.78); Takmicar t6 = new Takmicar(); t6.setZemlja("SAD"); t6.setImePrezime("Jack Stone"); t6.setVreme(0); l.unesiTakmicara(t1); l.unesiTakmicara(t2); l.unesiTakmicara(t3); l.unesiTakmicara(t4); l.unesiTakmicara(t5); l.unesiTakmicara(t6); l.ispisi(); System.out.println("Finalisti"); l.ispisiFinaliste(); System.out.println("Reprezentativci SAD"); l.ispisiReprezentativce("SAD"); if (l.daLiJeOborenRekord(19.1)) System.out.println("Rekord je oboren"); else System.out.println("Rekord nije oboren"); } }

You might also like