X-Git-Url: http://svarog.pmf.uns.ac.rs/gitweb/?p=spa2-materijali.git;a=blobdiff_plain;f=sortiranje%2Fknjige%2FBiblioteka.java;h=a4e543e9961ab9859c3d46120f8875b41d26008d;hp=b05747273a79e0358a5e0fb4746d547037dee01e;hb=2cf3bc80d3e3bb12d762916f9238b445d38129de;hpb=d68d7013f76f881985944fa75064405124ed5a0d diff --git a/sortiranje/knjige/Biblioteka.java b/sortiranje/knjige/Biblioteka.java index b057472..a4e543e 100644 --- a/sortiranje/knjige/Biblioteka.java +++ b/sortiranje/knjige/Biblioteka.java @@ -1,14 +1,13 @@ -/** - * Resenje zadatka sort1 sa vezbi - */ import java.util.Arrays; +import org.svetovid.Svetovid; import org.svetovid.io.SvetovidReader; import org.svetovid.io.SvetovidWriter; // Klasa koja opisuje jednu knjigu class Knjiga implements Comparable { + // Osobine jednom kreirane knjige se ne mogu menjati private final int id; private final String naslov; private final String autor; @@ -19,23 +18,7 @@ class Knjiga implements Comparable { this.autor = autor; } - public String toString() { - return id + " " + autor + ": " + naslov; - } - - public int compareTo(Knjiga that) { - // najjednostavnija verzija: knjige uredjene po "id" broju - //return this.id - that.id; - - // autor-naslov - int rez = this.autor.compareTo(that.autor); - if (rez == 0) { - rez = this.naslov.compareTo(that.naslov); - } - return rez; - } - - public String getNaslov(){ + public String getNaslov() { return naslov; } @@ -46,6 +29,32 @@ class Knjiga implements Comparable { public int getId() { return id; } + + public String toString() { + + // Tekstualna reprezentacija knjige oblika: + // 9785 J.R.R. Tolkien: The Lord of the Rings + return id + " " + autor + ": " + naslov; + + } + + public int compareTo(Knjiga that) { + + // Najjednostavnije poredjenje je po "id" broju + // return this.id - that.id; + + // No mi ovde poredimo prvo po autoru + int rezultat = this.autor.compareTo(that.autor); + + // A potom po naslovu, ako je sutor isti + if (rezultat == 0) { + rezultat = this.naslov.compareTo(that.naslov); + } + + // Vracamo rezultat poredjenja + return rezultat; + + } } // Glavni program @@ -57,7 +66,9 @@ public class Biblioteka { String fajl = Svetovid.in.readLine("Unesite ime fajla sa knjigama:"); Knjiga[] niz = ucitajKnjige(fajl); + // Dalje radimo samo ako smo uspeli da ucitamo knjige if (niz != null) { + // Stampanje ucitanog niza Svetovid.out.println(); Svetovid.out.println("Nesortirani niz:"); @@ -75,8 +86,9 @@ public class Biblioteka { // Ispis knjiga u fajl String izlazni = Svetovid.in.readLine("Unesite ime fajla za ispis:"); - snimiKnjige(niz,izlazni); + snimiKnjige(niz, izlazni); + // Prijavljujemo gresku ako nismo uspeli da ucitamo niz } else { System.err.println("Greska pri ucitavanju niza, kraj rada"); } @@ -90,8 +102,8 @@ public class Biblioteka { return null; } - // Ako mozemo, napravimo precicu 'in' da ne bi morali da - // svaki put kuvamo 'Svetovid.in(fajl)' + // Ako mozemo, napravimo precicu 'in' da ne bismo morali + // svaki put da kucamo 'Svetovid.in(fajl)' SvetovidReader in = Svetovid.in(fajl); // Koliko ima knjiga u fajlu? @@ -116,6 +128,9 @@ public class Biblioteka { } + // Zatvorimo fajl + Svetovid.closeIn(fajl); + // Vratimo ucitani niz return rez; @@ -128,27 +143,28 @@ public class Biblioteka { } public static void snimiKnjige(Knjiga[] niz, String ime) { + + // Ako ne mozemo da otvorimo fajl, vracamo se u glavni program if (!Svetovid.testOut(ime)) { - // ne mozemo da snimimo, vracamo se - System.err.println("Nemoguce snimanje u fajl"); + System.err.println("Snimanje u fajl nije moguce!"); return; } - // napravimo precicu 'out' da ne bi morali da - // svaki put pisemo 'Svetovid.out(ime)' + // Napravimo precicu 'out' da ne bismo morali + // svaki put da kucamo 'Svetovid.out(ime)' SvetovidWriter out = Svetovid.out(ime); - // pisemo broj knjiga, kao u originalu + // Upisemo ukupan broj knjiga, kao u originalnom fajlu out.println(niz.length); - // za svaku knjigu ispisujemo podatke + // Za svaku knjigu upisemo redom sve podatke for (Knjiga knjiga : niz) { out.println(knjiga.getId()); out.println(knjiga.getNaslov()); out.println(knjiga.getAutor()); } - // zatvorimo izlaz + // Zatvorimo izlaz out.close(); }