You are on page 1of 16

Ulazno izlazni tokovi (IO Input Output Streams) Fajlovi sa prostim podacima (Data fajlovi)

Zadatak 1 Napraviti klasu IOProstiPodaci koja ima: Javnu metodu koja u data fajl brojevi.out upisuje realne brojeve 12.12, 1.01, 55.55, 0.12, 50.0 i 25.0. Javnu metodu koja iz data fajla brojevi.out uitava sve realne brojeve i ispisuje ih na ekranu. Javnu metodu koja u data fajl visine.out upisuje visine kosarkasa reprezentacije. Ove visine se unose u vidu ulaznog argumenta metode i to kao niz celih brojeva. Javnu metodu koja iz data fajla visine.out uitava visine reprezentativaca i ispisuje ih na ekranu. Pored toga, metoda ispisuje i prosenu visinu koarkaa. Javnu metodu koja u data fajl tezine.out upisuje teine lanova bokserske ekipe. Ove teine se unose u vidu ulaznog argumenta metode i to kao niz realnoh brojeva. Pri upisu, potrebno je svaku teinu upisati u novi red. Javnu metodu koja iz data fajla tezine.out uitava tezine boksera i ispisuje ih na ekranu. Pored toga, metoda u posebnom redu treba da ispie i teinu najteeg boksera. Pri uitavanju obratiti panju na to da je svaki podatak o teini upisan u poseban red u fajlu. Javnu metodu koja u data fajl proizvodi.out upisuje nazive najprodavanijih proizvoda za taj mesec. Izmeu svaka dva naziva u fajlu bi trebalo da se nae znak <tab> tj. tabulator, na primer: <proizvod1><tab><proizvod2><tab><proizvod3><tab>...Imena proizvoda su data u vidu ulaznog argumenta i to kao niz String-ova. Javnu metodu koja iz data fajla proizvodi.out uitava nazive najprodavanijih proizvoda i ispisuje ih na ekranu. Napraviti klasu TestIOProstiPodaci koja kreira jedan objekat klase IOProstiPodaci i poziva njegove metode. Reenje
import java.io.*; public class IOProstiPodaci { public void upisiRealneBrojeve(){ try{ //Otvaranje data fajla za upis. DataOutputStream out = new DataOutputStream( new BufferedOutputStream( new FileOutputStream("brojevi.out"))); //Upisivanje realnih brojeva. out.writeDouble(12.12); out.writeDouble(1.01); out.writeDouble(55.55); out.writeDouble(0.12); out.writeDouble(50.0); out.writeDouble(25.0); //Zatvaranje data fajla. out.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage()); } } public void ucitajIIspisiRealneBrojeve(){ try{ //Otvaranje data fajla za citanje. DataInputStream in = new DataInputStream( new BufferedInputStream( new FileInputStream("brojevi.out"))); //Ucitavanje realnih brojeva iz fajla i ispisivanje //na ekranu. Metoda 'available' vraca preostali broj //bajtova iz fajla koji jos nisu ucitani. Kada ova //metoda vrati broj 0 (nula) to znaci da se stiglo //do kraja fajla. while (in.available() != 0) System.out.println(in.readDouble()); //Zatvaranje fajla.

in.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage()); } } public void upisiVisine(int[] visine){ try{ DataOutputStream out = new DataOutputStream( new BufferedOutputStream( new FileOutputStream("visine.out"))); //Visine su date u vidu niza celih brojeva pa //se moraju upisivati u fajl jedna po jedna //koriscenjem for petlje. for(int i=0; i<visine.length;i++) out.writeInt(visine[i]); out.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage()); } } public void ucitajVisineIIspisi(){ try{ DataInputStream in = new DataInputStream( new BufferedInputStream( new FileInputStream("visine.out"))); double suma = 0; int brojKosarkasa = 0; while (in.available() != 0){ int v = in.readInt(); suma = suma + v; brojKosarkasa++; System.out.println(v); } double prosek = suma / brojKosarkasa; System.out.println("Proseca visina je: "+prosek); in.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage()); } } public void upisiTezine(double[] tezine){ try{ DataOutputStream out = new DataOutputStream( new BufferedOutputStream( new FileOutputStream("tezine.out"))); //Pri upisu, posle svakog unetog broja u fajl //se upisuje i znak za kraj reda (\n) da bi se //sledeci broj mogao upisati u novi red. for(int i=0; i<tezine.length;i++){ out.writeDouble(tezine[i]); out.writeChar('\n'); } out.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage()); } } public void ucitajTezineIIspisiMax(){ try{ DataInputStream in = new DataInputStream( new BufferedInputStream( new FileInputStream("tezine.out")));

double maxTezina = 0; while (in.available() != 0){ double t = in.readDouble(); if (t>maxTezina) maxTezina = t; System.out.println(t); //Ova linija koda sluzi da bi se ucitao znak za //kraj reda. Tek tada moze da se ucita sledeci broj. in.readChar();

System.out.println("Maksimalna tezina boksera je: "+maxTezina); in.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage()); }

public void upisiProizvode(String[] proizvodi){ try{ DataOutputStream out = new DataOutputStream( new BufferedOutputStream( new FileOutputStream("proizvodi.out"))); //Upisivanje String u data fajl se vrsi pozivanjem //metode writeUTF. Posle upisa naziva proizvoda potrebno //je upisati i znak <tab> tj. tabulator ('\t'). To se //vrsi pozivanjem metode writeChar. for(int i=0; i<proizvodi.length;i++){ out.writeUTF(proizvodi[i]); out.writeChar('\t'); } out.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage()); } } public void ucitajIIspisiProizvode(){ try{ DataInputStream in = new DataInputStream( new BufferedInputStream( new FileInputStream("proizvodi.out"))); while (in.available() != 0){ System.out.println(in.readUTF()); //Ova komanda sluzi samo tome da bi se ucitao //<tab> tj. da bi u narednom koraku while petlje //mogao da se ucita naziv sledeceg proizvoda. in.readChar(); } in.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage()); } } } public class TestIOProstiPodaci { public static void main(String[] args) { IOProstiPodaci iop = new IOProstiPodaci(); iop.upisiRealneBrojeve(); iop.ucitajIIspisiRealneBrojeve(); int[] visine = new int[5];

visine[0] visine[1] visine[2] visine[3] visine[4]

= = = = =

199; 185; 221; 205; 192;

iop.upisiVisine(visine); iop.ucitajVisineIIspisi(); double[] tezine = new double[4]; tezine[0] = 100.5; tezine[1] = 85.1; tezine[2] = 93.2; tezine[3] = 144.3; iop.upisiTezine(tezine); iop.ucitajTezineIIspisiMax(); String[] proizvodi = new String[5]; proizvodi[0] = "Oral-B cetkica za zube"; proizvodi[1] = "Colgate pasta"; proizvodi[2] = "Nivea sampon"; proizvodi[3] = "Gillete Mach 3 brijac"; proizvodi[4] = "Gillete Mach 3 ulosci za brijac"; iop.upisiProizvode(proizvodi); iop.ucitajIIspisiProizvode(); } }

Zadatak 2 Napraviti klasu IODataIzvestaji koja ima: Javnu metodu koja u data fajl gradovi.out upisuje podatke o gradovima i njihovoj udaljenosti od Beograda u formatu <naziv_grada><tab><udaljenost_od_bg>. Udaljenost je izraena u kilometrima (ceo broj) a podatke o svakom gradu treba upisati u poseban red. Podaci su: Kragujevac 115, Ni 239, Novi Sad 82, Uice 204. Javnu metodu koja iz data fajla gradovi.out uitava podatke o gradovima i ispisuje ih. Podaci su dati u formatu <naziv_grada><tab><udaljenost_od_bg> pri emu je podatak o svakom gradu dat u posebnom redu. Pored toga, metoda ispisuje podatke o gradu koji je najudaljeniji od Beograda naziv i udaljenost. Javnu metodu koja u data fajl drzave.out upisuje podatke o dravama: naziv, povrina i broj stanovnika u formatu <naziv><tab><povrsina><tab><broj_stanovnika>. Povrina je izraena u kvadratnim kilometrima (realan broj), a podatke o svakoj dravi treba upisati u poseban red. Podaci su: Austrija 83.858,2 km2 8.150.835 stanovnika; Francuska 547.030,7 km 60.180.529 stanovnika; Nemaka 357.022,2 km 83.251.850 stanovnika; Grka 131.940,0 km 10.964.020. Javnu metodu koja iz data fajla drzave.out uitava podatke o dravama i ispisuje samo dva podatka: podatak o dravi sa najmanjom povrinom i podatak o dravi sa najveim brojem stanovnika. Podaci iz fajla su dati u formatu <naziv><tab><povrsina><tab><broj_stanovnika> pri emu je podatak o svakoj dravi dat u posebnom redu. Javnu metodu koja u data fajl skladiste.out upisuje podatke o artiklima koji se nalaze u skladitu firme koja se bavi raunarima: kategorija proizvoda, naziv i koliina i to u formatu <kategorija_proizvoda><tab><naziv_proizvoda><tab><kolicina>. Koliina je izraena kao ceo broj, a podatke o svakom artiklu treba upisati u poseban red. Podaci su: LAPTOP IBM THINKPAD 12 kom., RACUNAR JUGODATA A 400 3 kom., LAPTOP TOSHIBA A 200 0 kom. i STAMPAC HP DESKJET 845C - 5 kom. Javnu metodu koja iz data fajla skladiste.out uitava podatke o artiklima i ispisuje na ekranu samo one artikle koji pripadaju kategoriji LAPTOP. Podaci iz fajla su dati u formatu <kategorija_proizvoda><tab><naziv_proizvoda><tab><kolicina> pri emu je podatak o svakom artiklu dat u posebnom redu. Prikaz bi trebalo da bude oblika:"Model: <naziv proizvoda>, trenutna kolicina:

<kolicina>". Pri tome, potrebno je prikazati samo one modele kojih trenutno ima na skladitu (one ija je koliina vea od nule).
Napraviti klasu TestIODataIzvestaji koja kreira jedan objekat klase IODataIzvestaji i poziva njegove metode. Reenje
import java.io.*;

public class IODataIzvestaji { public void upisiGradove(){ try{ DataOutputStream out = new DataOutputStream( new BufferedOutputStream( new FileOutputStream("gradovi.out"))); //Prvo se upisuje naziv grada, pa znak <tab> ('\t') pa //tek onda udaljenost od Beograda. Na kraju se upisuje //znak za kraj reda ('\n'). out.writeUTF("Kragujevac"); out.writeChar('\t'); out.writeInt(115); out.writeChar('\n'); out.writeUTF("Nis"); out.writeChar('\t'); out.writeInt(239); out.writeChar('\n'); out.writeUTF("Novi Sad"); out.writeChar('\t'); out.writeInt(82); out.writeChar('\n'); out.writeUTF("Uzice"); out.writeChar('\t'); out.writeInt(204); out.writeChar('\n'); out.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage());

} }

public void ucitajIIspisiGradove(){ try{ DataInputStream in = new DataInputStream( new BufferedInputStream( new FileInputStream("gradovi.out"))); int maxUdaljenost = 0; String maxGrad = ""; while (in.available() != 0){ String naziv = in.readUTF(); //Komanda kojom se ucitava <tab> da bi mogla da se //ucita udaljenost. in.readChar(); int udaljenost = in.readInt(); //Komanda kojom se ucitava znak za kraj reda da bi //u sledecem koraku mogao da se ucita novi grad. in.readChar(); //Provera da li je trenutni grad najudaljeniji od //Beograda. if (udaljenost > maxUdaljenost){ maxUdaljenost = udaljenost; maxGrad = naziv; } //Ispisivanje podataka o gradu. System.out.println(naziv+" "+udaljenost); } //Ispisivanje podataka o najudaljenijem gradu. System.out.println("Najudaljeniji grad od Beograda: "+ maxGrad+" ("+maxUdaljenost+" km)"); in.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage()); }

} public void upisiDrzave(){ try{ DataOutputStream out = new DataOutputStream( new BufferedOutputStream( new FileOutputStream("drzave.out"))); out.writeUTF("Austrija"); out.writeChar('\t'); out.writeDouble(83858.2); out.writeChar('\t'); out.writeInt(8150835); out.writeChar('\n'); out.writeUTF("Francuska"); out.writeChar('\t'); out.writeDouble(547030.7); out.writeChar('\t'); out.writeInt(60180529); out.writeChar('\n'); out.writeUTF("Nemacka"); out.writeChar('\t'); out.writeDouble(357022.2); out.writeChar('\t'); out.writeInt(83251850); out.writeChar('\n'); out.writeUTF("Grcka"); out.writeChar('\t'); out.writeDouble(131940.0); out.writeChar('\t'); out.writeInt(10964020); out.writeChar('\n'); out.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage()); } }

public void ucitajIIspisiDrzave(){ try{ DataInputStream in = new DataInputStream( new BufferedInputStream( new FileInputStream("drzave.out"))); double minPovrsina = 999999999; String minPDrzava = ""; double maxBrojStanovnika = 0; String maxSDrzava = ""; while (in.available() != 0){ String naziv = in.readUTF(); in.readChar(); double povrsina = in.readDouble(); in.readChar(); int brojStanovnika = in.readInt(); in.readChar(); if (povrsina < minPovrsina){ minPovrsina = povrsina; minPDrzava = naziv; } if (brojStanovnika > maxBrojStanovnika){ maxBrojStanovnika = brojStanovnika; maxSDrzava = naziv; }

//Ispisivanje podataka o najmnogoljudnijoj drzavi. System.out.println("Drzava sa najvise stanovnika je: "+ maxSDrzava+" ("+maxBrojStanovnika+")"); //Ispisivanje podataka o najmanjoj drzavi (po povrsini).

System.out.println("Drzava sa najmanjom povrsinom je: "+ minPDrzava+" ("+minPovrsina+" km2)"); in.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage()); }

public void upisiArtikle(){ try{ DataOutputStream out = new DataOutputStream( new BufferedOutputStream( new FileOutputStream("artikli.out"))); out.writeUTF("LAPTOP"); out.writeChar('\t'); out.writeUTF("IBM THINKPAD"); out.writeChar('\t'); out.writeInt(12); out.writeChar('\n'); out.writeUTF("RACUNAR"); out.writeChar('\t'); out.writeUTF("JUGODATA A 400"); out.writeChar('\t'); out.writeInt(3); out.writeChar('\n'); out.writeUTF("LAPTOP"); out.writeChar('\t'); out.writeUTF("TOSHIBA A 200"); out.writeChar('\t'); out.writeInt(0); out.writeChar('\n'); out.writeUTF("STAMPAC"); out.writeChar('\t'); out.writeUTF("HP DESKJET 845C"); out.writeChar('\t'); out.writeInt(5); out.writeChar('\n'); out.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage());

} }

public void ucitajIIspisiLaptopove(){ try{ DataInputStream in = new DataInputStream( new BufferedInputStream( new FileInputStream("artikli.out"))); while (in.available() != 0){ String kategorija = in.readUTF(); in.readChar(); String naziv = in.readUTF(); in.readChar(); int kolicina = in.readInt(); in.readChar(); if (kategorija.equals("LAPTOP") && kolicina>0) System.out.println("Model: "+naziv+ " Trenutna kolicina: "+kolicina); } in.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage()); } } } public class TestIODataIzvestaji {

public static void main(String[] args) { IODataIzvestaji iod = new IODataIzvestaji(); iod.upisiGradove(); iod.ucitajIIspisiGradove(); iod.upisiDrzave(); iod.ucitajIIspisiDrzave(); iod.upisiArtikle(); iod.ucitajIIspisiLaptopove(); } }

Zadatak 3 Napisati klasu DataIOKonvertor koja ima: Javnu metodu koja u data fajl temperature_c.out upisuje podatke o gradovima i njihovoj dnevnoj temperaturi u Celzijusima u formatu <naziv_grada><tab><temperatura>. Temperatura je izraena kao realan broj a podatke o svakom gradu treba upisati u poseban red. Podaci se unose sa tastature i to na sledei nain: korisnik unosi podatke o gradu i temperaturi, a posle svakog unosa se postavlja pitanje da li je potrebno uneti podatke o jo jednom gradu. Ako korisnik unese DA, ceo ciklus se ponavlja. Javnu metodu koja iz data fajla temperature_c.out uitava podatke o gradovima i njihovim temperaturama i upisuje ih u fajl temperature_f.out. Podaci u oba fajla treba da budu u formatu <naziv_grada><tab><temperatura> pri emu je podatak o svakom gradu dat u posebnom redu. Temperature gradova u fajlu temperature_f.out treba da budu izraene u Farenhajtima. Formula za pretvaranje Celzijusa u Farenhajte je: Tf = (9/5)*Tc + 32. Javnu metodu koja iz data fajla temperature_f.out uitava podatke o gradovima i njihovim temperaturama i ispisuje ih na ekranu. Podaci u fajlu su u formatu <naziv_grada><tab><temperatura> pri emu je podatak o svakom gradu dat u posebnom redu. Javnu metodu koja u data fajl mere.out upisuje podatke o zaposlenima jedne firme i njihovoj teini i visini u formatu <ime_i_prezime><tab><visina><tab><tezina>. Teina je izraena kao realan broj (kg), visina isto (cm) a podatke o svakom zaposlenom treba upisati u poseban red. Podaci se unose sa tastature i to na sledei nain: korisnik unosi podatke o zaposlenom (ime i prezime, visina, teina), a posle svakog unosa se postavlja pitanje da li je potrebno uneti podatke o jo jednom zaposlenom. Ako korisnik unese DA, ceo ciklus se ponavlja. Javnu metodu koja iz data fajla mere.out uitava podatke o zaposlenima i njihovoj visin i teini i upisuje ih u fajl mere2.out. Podaci u oba fajla treba da budu u formatu <ime_i_prezime><tab><visina><tab><tezina> pri emu je podatak o svakom zaposlenom dat u posebnom redu. Telesne mere zaposlenih u fajlu mere2.out treba da budu izraene u stopama i funtama pri emu je 1 funta = 0.4536 kg a 1 stopa = 32.81cm . Javnu metodu koja iz data fajla mere2.out uitava podatke o zaposlenima i ispisuje ih na ekranu. Podaci u fajlu su u formatu <ime_i_prezime><tab><visina><tab><tezina> pri emu je podatak o svakom zaposlenom dat u posebnom redu. Napraviti klasu TestDataIOKonvertor koja kreira jedan objekat klase DataIOKonvertor i poziva njegove metode. Reenje
import java.io.*; public class DataIOKonvertor { public void upisiTemperature(){ try{ DataOutputStream out = new DataOutputStream( new BufferedOutputStream( new FileOutputStream("temperature_c.out"))); BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); boolean kraj = false; while (!kraj){ System.out.print("Unesite ime grada: ");

String grad = br.readLine(); System.out.print("Unesite temperaturu: "); double temperatura = Double.parseDouble(br.readLine()); out.writeUTF(grad); out.writeChar('\t'); out.writeDouble(temperatura); out.writeChar('\n'); System.out.print("Da li zelite jos da unosite(DA/NE)? "); if (!(br.readLine().equals("DA"))) kraj = true; } out.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage());

} }

public void ucitajKonvertujIUpisiTemperature(){ try{ DataInputStream in = new DataInputStream( new BufferedInputStream( new FileInputStream("temperature_c.out"))); DataOutputStream out = new DataOutputStream( new BufferedOutputStream( new FileOutputStream("temperature_f.out"))); while (in.available() != 0){ String naziv = in.readUTF(); in.readChar(); double temperatura = in.readDouble(); in.readChar(); double temperaturaF = temperatura*(9/5)+32; out.writeUTF(naziv); out.writeChar('\t'); out.writeDouble(temperaturaF); out.writeChar('\n'); } in.close(); out.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage()); }

public void ucitajIIspisiKonvertovaneTemperature(){ try{ DataInputStream in = new DataInputStream( new BufferedInputStream( new FileInputStream("temperature_f.out"))); while (in.available() != 0){ String naziv = in.readUTF(); in.readChar(); double temperatura = in.readDouble(); in.readChar(); } System.out.println(naziv+" "+temperatura+"F");

in.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage()); }

public void upisiZaposlene(){ try{ DataOutputStream out = new DataOutputStream( new BufferedOutputStream(

new FileOutputStream("mere.out"))); BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); boolean kraj = false; while (!kraj){ System.out.print("Unesite ime i prezime: "); String imePrezime = br.readLine(); System.out.print("Unesite visinu: "); double visina = Double.parseDouble(br.readLine()); System.out.print("Unesite tezinu: "); double tezina = Double.parseDouble(br.readLine()); out.writeUTF(imePrezime); out.writeChar('\t'); out.writeDouble(visina); out.writeChar('\t'); out.writeDouble(tezina); out.writeChar('\n'); System.out.print("Da li zelite jos da unosite(DA/NE)? "); if (!(br.readLine().equals("DA"))) kraj = true;

out.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage()); } }

public void ucitajKonvertujIUpisiZaposlene(){ try{ DataInputStream in = new DataInputStream( new BufferedInputStream( new FileInputStream("mere.out"))); DataOutputStream out = new DataOutputStream( new BufferedOutputStream( new FileOutputStream("mere2.out"))); while (in.available() != 0){ String imePrezime = in.readUTF(); in.readChar(); double visina = in.readDouble(); in.readChar(); double tezina = in.readDouble(); in.readChar(); double tezinaF = tezina/0.4536; double visinaS = visina/32.81; out.writeUTF(imePrezime); out.writeChar('\t'); out.writeDouble(visinaS); out.writeChar('\t'); out.writeDouble(tezinaF); out.writeChar('\n'); } in.close(); out.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage()); }

public void ucitajIIspisiKonvertovaneZaposlene(){ try{ DataInputStream in = new DataInputStream( new BufferedInputStream( new FileInputStream("mere2.out")));

while (in.available() != 0){ String imePrezime = in.readUTF(); in.readChar(); double visina = in.readDouble(); in.readChar(); double tezina = in.readDouble(); in.readChar(); } System.out.println(imePrezime+" "+visina+" stopa "+tezina+" funti");

} }

in.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage()); }

public class TestDataIOKonvertor { public static void main(String[] args) { DataIOKonvertor dio = new DataIOKonvertor(); dio.upisiTemperature(); dio.ucitajKonvertujIUpisiTemperature(); dio.ucitajIIspisiKonvertovaneTemperature(); dio.upisiZaposlene(); dio.ucitajKonvertujIUpisiZaposlene(); dio.ucitajIIspisiKonvertovaneZaposlene(); } }

Zadatak 4 Napraviti klasu Student koja ima: Privatni atribut imePrezime. Privatni atribut brojPoena (realan broj). Odgovarajue javne get i set metode za ova dva atributa. Nedozvoljena vrednost za atribut imePrezime je null String a broj poena mora biti u rasponu 0-100. U sluaju unosa bilo koje nedozvoljene vrednosti potrebno je baciti izuzetak sa odgovarajuom porukom. Redefinisanu toString metodu klase Object koja vraa String koji sadri sve podake o studentu uz odgovarajuu poruku. Napraviti klasu RezultatiKolokvijuma koja ima: Privatni atribut studenti koji predstavlja listu objekata klase Student. Ovu listu je potrebno odmah inicijalizovati. Javnu metodu koja kao ulazni argument dobija String koji predstavlja ime i prezime studenta i realan broj koji predstavlja osvojene poene i unosi ove podatke o studentu u listu. Javnu metodu koja upisuje podatke o studentima iz liste u data fajl studenti.out u formatu <ime_prezime><tab><broj_poena>. Podatke o svakom studentu treba upisati u poseban red. Javnu metodu koja iz data fajla studenti.out uitava podatke o studentima i unosi ih u listu. Pre unoenja, metoda brie listu tj. sve podatke iz nje. Podaci su dati u formatu <ime_prezime><tab><broj_poena>. Javnu metodu koja vraa prosean broj poena koj su studenti osvojili na kolokvijumu. Javnu metodu koja na ekranu ispisuje podatke o onim studentima koji su osvojili 100 poena. Napraviti klasu TestRezultatKolokvijuma koja kreira jedan objekat klase RezultatiKolokvijuma i poziva njegove metode. Reenje
public class Student { private String imePrezime; private double brojPoena; public double getBrojPoena() { return brojPoena;

} public void setBrojPoena(double brojPoena) { if (brojPoena < 0 || brojPoena > 100) throw new RuntimeException("Broj poena mora biti u rasponu 0-100"); this.brojPoena = brojPoena; } public String getImePrezime() { return imePrezime; } public void setImePrezime(String imePrezime) { if (imePrezime == null) throw new RuntimeException("Ime i prezime ne sme biti null"); } this.imePrezime = imePrezime;

public String toString(){ return "Ime i prezime: "+imePrezime+" Broj poena: "+brojPoena; } } import java.io.*; import java.util.LinkedList; public class RezultatiKolokvijuma { private LinkedList<Student> studenti = new LinkedList<Student>(); public void unesiStudenta(String ip, double p){ Student s = new Student(); s.setImePrezime(ip); s.setBrojPoena(p); } studenti.add(s);

public void upisiStudente(){ try{ DataOutputStream out = new DataOutputStream( new BufferedOutputStream( new FileOutputStream("studenti.out"))); for(int i=0; i<studenti.size();i++){ out.writeUTF(studenti.get(i).getImePrezime()); out.writeChar('\t'); out.writeDouble(studenti.get(i).getBrojPoena()); out.writeChar('\n'); } out.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage()); } } public void ucitajStudente(){ try{ DataInputStream in = new DataInputStream( new BufferedInputStream( new FileInputStream("studenti.out"))); //Brisanje podataka iz liste. studenti.clear(); while (in.available() != 0){ Student s = new Student(); s.setImePrezime(in.readUTF()); in.readChar(); s.setBrojPoena(in.readDouble()); in.readChar(); studenti.add(s);

} in.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage()); } } public double prosek(){ double suma = 0; for (int i=0; i<studenti.size();i++) suma+=studenti.get(i).getBrojPoena(); } return suma/studenti.size();

public void ispisiNajbolje(){ for (int i=0; i<studenti.size();i++) if (studenti.get(i).getBrojPoena()==100) System.out.println(studenti.get(i)); } } public class TestRezultatiKolokvijuma { public static void main(String[] args) { RezultatiKolokvijuma rk = new RezultatiKolokvijuma(); rk.unesiStudenta("Pera rk.unesiStudenta("Zika rk.unesiStudenta("Mara rk.unesiStudenta("Mika rk.upisiStudente(); rk.ucitajStudente(); System.out.println("Prosecan broj poena je: "+rk.prosek()); rk.ispisiNajbolje(); } } Peric", Zikic", Maric", Mikic", 100); 67); 100); 50);

Zadatak 5 Napisati klasu Koncert koja ima: Privatni atribut grad koji predstavlja grad u kome je koncert odran. Privatni atribut bend koji predstavlja grupu koja je odrala koncert. Javne get i set metode za ove atribute. Nedozvoljene vrednosti za oba atributa su null String-ovi. U sluaju unosa ovih vrednosti, potrebno je baciti izuzetak sa odgovarajuom porukom. Redefinisanu toString metodu klase Object koja vraa String koji sadri sve podake o koncertu uz odgovarajuu poruku. Napraviti klasu KoncertnaSezona koja ima: Privatni atribut koncerti koji predstavlja listu objekata klase Koncert. Javnu metodu koja kao ulazni argument dobija dva Stringa od kojih jedan predstavlja naziv grada a drugi naziv benda i unosi ove podatke o koncertu u listu. Javnu metodu koja upisuje podatke o koncertima iz liste u data fajl koncerti.out u formatu <grad><tab><bend>. Podatke o svakom koncertu treba upisati u poseban red. Javnu metodu koja upisuje podatke o koncertima iz liste u data fajl koncerti_b.out u formatu <grad><tab><bend>. Upisuju se samo podaci o koncertima koji su odrani u gradovima ije ime poinje slovom B. Podatke o svakom koncertu treba upisati u poseban red. Javnu metodu koja iz data fajla koncerti.out uitava podatke o koncertima i unosi ih u listu. Pre unoenja, metoda brie listu tj. sve podatke iz nje. Podaci su dati u formatu <grad><tab><bend>. Javnu metodu koja kao ulazni argument prima naziv benda i vraa broj koncerata koji je taj bend odrao u sezoni. Javnu metodu koja kao ulazni argument prima naziv grada i vraa broj koncerata koji su se odrali u tom gradu. Javnu metodu koja na ekranu ispisuje naziv benda koji je odrao najvie koncerata i koji je broj u pitanju.

Javnu metodu koja na ekranu ispisuje naziv grada u kome je odrano najvie koncerata i koji je broj u pitanju.

Napraviti klasu TestKoncertnaSezona koja kreira jedan objekat klase KoncertnaSezona i poziva njegove metode. Reenje
public class Koncert { private String grad; private String bend; public String getBend() { return bend; } public void setBend(String bend) { if (bend == null) throw new RuntimeException("Ime benda ne moze biti null"); this.bend = bend; } public String getGrad() { return grad; } public void setGrad(String grad) { if (grad == null) throw new RuntimeException("Ime grada ne moze biti null"); this.grad = grad; } public String toString(){ return "Grad: "+grad+" Bend: "+bend; } } import java.io.*; import java.util.LinkedList; public class KoncertnaSezona { private LinkedList<Koncert> koncerti = new LinkedList <Koncert>(); public void unesiKoncert(String grad, String bend){ Koncert k = new Koncert(); k.setGrad(grad); k.setBend(bend); koncerti.add(k); } public void upisiKoncerte(){ try{ DataOutputStream out = new DataOutputStream( new BufferedOutputStream( new FileOutputStream("koncerti.out"))); for(int i=0; i<koncerti.size();i++){ out.writeUTF(koncerti.get(i).getGrad()); out.writeChar('\t'); out.writeUTF(koncerti.get(i).getBend()); out.writeChar('\n'); } out.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage()); } } public void upisiKoncerteB(){ try{ DataOutputStream out = new DataOutputStream(

new BufferedOutputStream( new FileOutputStream("koncerti_b.out"))); for(int i=0; i<koncerti.size();i++) if (koncerti.get(i).getGrad().charAt(0)=='B'){ out.writeUTF(koncerti.get(i).getGrad()); out.writeChar('\t'); out.writeUTF(koncerti.get(i).getBend()); out.writeChar('\n'); } out.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage()); } } public void ucitajKoncerte(){ try{ DataInputStream in = new DataInputStream( new BufferedInputStream( new FileInputStream("koncerti.out"))); koncerti.clear(); while (in.available() != 0){ Koncert k = new Koncert(); k.setGrad(in.readUTF()); in.readChar(); k.setBend(in.readUTF()); in.readChar(); koncerti.add(k); } in.close(); }catch(Exception e){ System.out.println("Greska: "+e.getMessage()); } } public int brojKoncerataBenda(String bend){ int brojac = 0; for (int i=0; i<koncerti.size();i++) if (koncerti.get(i).getBend().equals(bend)) brojac++; return brojac; } public int brojKoncerataUGradu(String grad){ int brojac = 0; for (int i=0; i<koncerti.size();i++) if (koncerti.get(i).getGrad().equals(grad)) brojac++; return brojac; } public void ispisiMaxBend(){ int maxKoncerata = 0; String maxBend = ""; for (int i=0; i<koncerti.size();i++){ int brojKoncerata = brojKoncerataBenda(koncerti.get(i).getBend()); if (brojKoncerata > maxKoncerata){ maxKoncerata = brojKoncerata; maxBend = koncerti.get(i).getBend(); } } System.out.println("Bend koji je odrzao najvise koncerata je: "+ maxBend+" - "+maxKoncerata+" koncerta");

} public void ispisiMaxGrad(){ int maxKoncerata = 0; String maxGrad = ""; for (int i=0; i<koncerti.size();i++){ int brojKoncerata = brojKoncerataUGradu(koncerti.get(i).getGrad()); if (brojKoncerata > maxKoncerata){ maxKoncerata = brojKoncerata; maxGrad = koncerti.get(i).getGrad(); }

System.out.println("Grad u kome se odrzalo najvise koncerata je: "+ maxGrad+" - "+maxKoncerata+" koncerta"); } }

public class TestKoncertnaSezona { public static void main(String[] args) { KoncertnaSezona kc = new KoncertnaSezona(); kc.unesiKoncert("Beograd", "Metallica"); kc.unesiKoncert("Beograd", "50 Cent"); kc.unesiKoncert("Novi Sad", "Moloko"); kc.unesiKoncert("Nis", "Darkwood dub"); kc.unesiKoncert("Indjija", "Red hot chilli peppers"); kc.unesiKoncert("Beograd", "Darkwood dub"); kc.upisiKoncerte(); kc.upisiKoncerteB(); kc.ucitajKoncerte(); kc.ispisiMaxBend(); kc.ispisiMaxGrad(); } }

You might also like