Вежби 08.Примери за работа со множества и мапи, запознавање со исклучоци и справување со нив.
Задача.8.1. Дссп која ќе има една класа. Класата да се вика “Glavna“ и да го има методот: public static void main(String[] args). Во класата да се направи множество од String. Во множеството да се внесат неколку машки (при внесувањето да има и дупликати) имиња и да потоа да се испечати множеството).
Код.8.1. package zadaca01; import java.util.HashSet; import java.util.Set;
public class Glavna { /** * @param args */ public static void main(String[] args) { Set<String> mnozestvoOdMaskiIminja = new HashSet<String>(); mnozestvoOdMaskiIminja.add("Mihajlo"); mnozestvoOdMaskiIminja.add("Zoran"); mnozestvoOdMaskiIminja.add("Ace"); mnozestvoOdMaskiIminja.add("Nikola"); mnozestvoOdMaskiIminja.add("Pece"); mnozestvoOdMaskiIminja.add("Ace"); mnozestvoOdMaskiIminja.add("Mihajlo"); System.out.println(mnozestvoOdMaskiIminja); } } Извршување.8.1.
Задача.8.2. Дссп која ќе има две класи. Првата клса да се вика “Glavna“ и да го има методот: public static void main(String[] args). Втората класа да се вика Recnik и да мапа recnik со клуч String и вредност String: Map<String,String> recnik = new HashMap<String, String>(); Да се направи конструктор за Recnik класата во кој ќе се внесат статично некои парови во мапата. Да се напише функција кој што ќе преведува збор, и да се напише функција кој што ќе додава нови зборови во речникот. Во главната класа да се креира објект од класата Recnik и да се пробаат методите. Код.8.2. package zadaca02; import java.util.HashMap; import java.util.Map; public class Recnik { Map<String,String> recnik = new HashMap<String, String>(); public Recnik() { recnik.put("Zdravo", "Hi"); recnik.put("jas", "I"); recnik.put("sum", " am"); } public String prevediZbor(String zbor) { String prevod; prevod=recnik.get(zbor); if(prevod==null) prevod="Nemam prevod za toj zbor"; return prevod; } public void dodadiNovZbor(String zbor,String prevod) { recnik.put(zbor, prevod); } package zadaca02; import zadaca02.Recnik;
public class Glavna { /** * @param args */
public static void main(String[] args) { Recnik recnik = new Recnik(); System.out.println(recnik.prevediZbor("Zdravo")); System.out.println(recnik.prevediZbor("Prijatno")); recnik.dodadiNovZbor("Prijatno", "Bye"); System.out.println(recnik.prevediZbor("Prijatno"));
} } Извршување.8.2.
Задача.8.3. Дссп која ќе има една класа. Класата да се вика “Glavna“ и да го има методот: public static void main(String[] args). Во класата да се направи глобална низа која ќе има 6 елементи: static int[] niza = new int[] { 1, 2, 3, 4, 5, 6 }; Исто така да се направат два методи кои ќе примаат цел број и ќе го печатат елементот од низата чии индекс ќе е еднаков на внесениот број. Едниот метод да има код за справување со исклучоци. Во main методот да се повикаат двете функции со 20 како број на влез.
Код.8.3. package zadaca03; public class Glavna { static int[] niza = new int[] { 1, 2, 3, 4, 5, 6 }; public static void main(String[] args) { getElementIfExist(20); getElement(20);// Ovoj red ke pojavi isklucok
} public static void getElement(int i) { System.out.println(niza[i]); } public static void getElementIfExist(int i) { try { System.out.println (niza[i]); } catch (RuntimeException e) { System.err.println("Takov element ne postoi "); } } }
Извршување.8.3. А. За елелмент 20
Б. За елемент 5.
Задача.8.4. Дссп која ќе има една класа. Класата да се вика “Glavna“ и да го има методот: public static void main(String[] args). Во класата да прочита збор од тастатура и да се испечати истиот.
Код.8.4. package zadaca04; import java.io.*; class Glavna { public static void main(String[] args) { int x; String s=""; try { while((x = System.in.read()) != 13) s+=(char)x; System.out.println(s); } catch (IOException e) { e.printStackTrace(); }
} } Извршување.8.4.а.
се
8.4.б.
Задача.8.5. Дссп која ќе има две класи. Првата клса да се вика “Glavna“ и да го има
методот: public static void main(String[] args). Втората класа да се вика Datoteka, да има еден влезе стрим, еден излезен стрим и еден стринг за име на фајл: FileInputStream in; FileOutputStream out; String fileName; Да се направи конструктор за Datoteka класата во кој ќе се внеси динамично името на фајлот (датотеката) до кој ќе пристапуваат стримовите. Да се напише функција која ќе чита од фајл и ќе печати на конзола (public void citajOdFajl()) И функција кој ќе прима String и истиот ќе го запише во фајл (public void zapisiVoFajl(String text)).
Код.8.5. package zadaca05; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class Datoteka { FileInputStream in; FileOutputStream out; String fileName; public Datoteka(String fileName) { this.fileName = fileName; } public void zapisiVoFajl(String text) { try{ out = new FileOutputStream(fileName); for(int i=0;i
} package zadaca05; import java.io.IOException;
public class Glavna { /** * @param args * @throws FileNotFoundException */ public static void main(String[] args) { Datoteka datoteka = new Datoteka("text.txt"); datoteka.zapisiVoFajl("Zdravo "); try { datoteka.citajOdFajl(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
} } Извршување.8.5.
Примери за ефект на измени:
Вежби 09. Креирање на XML фајлови со користење на DОМ класите
Задача.9.1. Дссп која ќе има две класи. Првата класа да се вика “Glavna“ и да го има методот: public static void main(String[] args). Втората класа да се вика XmlCreator и да го има метод public String create(String fileName). Методот да го креира следниот XML: <Student>
Nekoeprezime NekoeIme 1111 Код.9.1. package zadaca01; import java.io.File; import import import import import import import import
javax.xml.parsers.DocumentBuilder; javax.xml.parsers.DocumentBuilderFactory; javax.xml.transform.Result; javax.xml.transform.Source; javax.xml.transform.Transformer; javax.xml.transform.TransformerFactory; javax.xml.transform.dom.DOMSource; javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document; import org.w3c.dom.Element;
public class XmlCreator { public String create(String fileName) { try { //Delot na kodot sto pocnuva tuka e standarden i mora da se napise sekogas koga se kreira DOM struktura //Najprvo se pravi Factory DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); //Potoa mora da se napravi DocumentBuilder so koj sto se kreiraat novi dokumenti DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); //I na kraj od snadardniot del se kreira samiot dokument Document document = documentBuilder.newDocument();
//Tuka zavrsuva standardniot del, ottuka nadolu sto ke stavate vo dokumentot zavisi od vas //VNIMANIE: Sekoj dokument mora da ima samo eden koren odnosno root element. Toa znaci deka ako //sakame da imame poveke elementi od tip student ke mora da im stavime eden tatko element koj ke bide koren //vo slucajov imam samo eden element od tip student, pa zatoa nego go stavame kako koren na dokumentot Element root = (Element) document.createElement("Student"); //Posle korenot se kreiraat i drugite elementi Element prezime = (Element) document.createElement("Prezime"); Element ime = (Element) document.createElement("Ime"); Element index = (Element) document.createElement("Index");
//Sega postavuvame tekstualni vrednosti za elementite sto gi dodadovme na elementot Student prezime.appendChild(document.createTextNode("NekoePrezime")); ime.appendChild(document.createTextNode("NekoeIme")); index.appendChild(document.createTextNode("1111"));
//Na koren elementot vo slucajov Student, mu gi dodavame kako deca negite pod elementi (ime, prezime i index) root.appendChild(prezime); root.appendChild(ime); root.appendChild(index); //Korenot go dodavame na dokumentot document.appendChild(root);
//Dokolku e potrebno da se napravat poveke Covek elementi pogorniot kod treba da se povtoruva. //VNIMANIE: odreden referenca kon element (na primer so ime prezime) pretstavuva del od DOM modelot i pokazuva //na odredeno mesto vo strukturata. Koga bi sakale da ja koristite istata referenca (prezime slucajov) za dodavanje //nov element vo drvoto togas mora da go povikate kodot onolku pati kolku sto elementi vi trebaat: //prezime = (Element) document.createElement("prezime");
//Ottuka nadolu e standarded kod za zapisuvanje na dokumentot na lokacija na disk. //Kreiraj source objekt Source source = new DOMSource(document); //Kreiraj file objekt File file = new File(fileName); //kreiraj result objekt
Result result = new StreamResult(file); //Zapisi go DOM dokumentot vo fajl Transformer transformer= TransformerFactory.newInstance().newTransformer(); transformer.transform(source,result); return "DONE!"; } catch (Exception e) { return e.toString(); } }
package zadaca01; public class Glavna { /** * @param args */ public static void main(String[] args) { XmlCreator xml = new XmlCreator(); System.out.println(xml.create("test01.xml")); } } Извршување.9.1.
Преглед на содржина на xml фајл: 9.1.б.
Задача.9.2. Дссп која ќе има три класи. Првата класа да се вика “Glavna“ и да го има методот: public static void main(String[] args). Втората класа да се вика XmlCreator и да го има метод public String create(String fileName, Student student). Методот да креира XML како во претходната задача (со податоците од внесениот студент). Третата класа да се вика Student (да биде иста како во досега изработенита задачи). Код.9.2.
package zadaca02; import java.io.File; import import import import import import import import
javax.xml.parsers.DocumentBuilder; javax.xml.parsers.DocumentBuilderFactory; javax.xml.transform.Result; javax.xml.transform.Source; javax.xml.transform.Transformer; javax.xml.transform.TransformerFactory; javax.xml.transform.dom.DOMSource; javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document; import org.w3c.dom.Element;
public class XmlCreator { public String create(String fileName, Student student) { try {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document document = documentBuilder.newDocument(); Element root = (Element) document.createElement("Student"); Element prezime = (Element) document.createElement("Prezime"); Element ime = (Element) document.createElement("Ime"); Element index = (Element) document.createElement("Index"); root.appendChild(prezime); root.appendChild(ime); root.appendChild(index); document.appendChild(root);
prezime.appendChild(document.createTextNode(student.getPrezime())) ; ime.appendChild(document.createTextNode(student.getIme())); index.appendChild(document.createTextNode(String.valueOf(student.g etIndex()))); Source source = new DOMSource(document); File file = new File(fileName); Result result = new StreamResult(file); Transformer transformer= TransformerFactory.newInstance().newTransformer(); transformer.transform(source,result); return "DONE!"; } catch (Exception e) { return e.toString(); } } }
package zadaca02; public class Student { private String ime; private String prezime; private int index;
public Student(String ime, String prezime, int index) { this.ime = ime; this.prezime = prezime; this.index = index; } public String getIme() { return ime; } public void setIme(String ime) { this.ime = ime; } public int getIndex() { return index; } public void setIndex(int index) { this.index = index; } public String getPrezime() { return prezime; } public void setPrezime(String prezime) { this.prezime = prezime; } } package zadaca02; public class Glavna { /** * @param args */ public static void main(String[] args) { XmlCreator xml = new XmlCreator(); Student s = new Student("Kalina", "Nikoloska", 999); System.out.println(xml.create("test02.xml", s)); } } Извршување.9.2.
.xml-фајл.9.2.б.
Задача.9.3. Дссп која ќе има три класи. Првата класа да се вика “Glavna“ и да го има методот: public static void main(String[] args). Втората класа да се вика XmlCreator и да го има метод public String create(String fileName, List<Student> student). Методот да креира XML во кој ќе бидат внесени сите студенти од листата, XML-од да го има следниот облик: <Studenti> <Student>
Stamatov Zlatko 693 <Student> <Student>
Талеска Јулијана 1000
<Student>
Stojcev Pece 234 Третата класа да се вика Student (да биде иста како во досега изработенита задачи).
Код.9.3. package zadaca03; import java.io.File; import java.util.List; import import import import import import import import
javax.xml.parsers.DocumentBuilder; javax.xml.parsers.DocumentBuilderFactory; javax.xml.transform.Result; javax.xml.transform.Source; javax.xml.transform.Transformer; javax.xml.transform.TransformerFactory; javax.xml.transform.dom.DOMSource; javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document; import org.w3c.dom.Element;
public class XmlCreator { public String create(String fileName, List<Student> student) { try { DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document document = documentBuilder.newDocument(); Element root = (Element) document.createElement("Studenti"); //Za da gi vmetneme site elementi od lisata ni treba naredba za povrotuvanje for(Student s: student) { //Za da ne se znae od kade pocnuva eden sdudent i kade zavrsuva //Ke kreirame nov element Student koj ke go vmetnuvame vo korenot //A elementite ime,prezime i index ke gi vmetnuvame vo nego
Element studentElement = (Element) document.createElement("Student"); Element prezime = (Element) document.createElement("Prezime"); Element ime = (Element) document.createElement("Ime"); Element index = (Element) document.createElement("Index");
prezime.appendChild(document.createTextNode(s.getPrezime())); ime.appendChild(document.createTextNode(s.getIme())); index.appendChild(document.createTextNode(String.valueOf(s.getInde x()))); studentElement.appendChild(prezime); studentElement.appendChild(ime); studentElement.appendChild(index); root.appendChild(studentElement); } document.appendChild(root); Source source = new DOMSource(document); File file = new File(fileName); Result result = new StreamResult(file); Transformer transformer= TransformerFactory.newInstance().newTransformer(); transformer.transform(source,result); return "DONE!"; } catch (Exception e) { return e.toString(); } } }
package zadaca03; public class Student { private String ime; private String prezime; private int index; public Student(String ime, String prezime, int index) {
this.ime = ime; this.prezime = prezime; this.index = index; } public String getIme() { return ime; } public void setIme(String ime) { this.ime = ime; } public int getIndex() { return index; } public void setIndex(int index) { this.index = index; } public String getPrezime() { return prezime; } public void setPrezime(String prezime) { this.prezime = prezime; } }
package zadaca03; import java.util.ArrayList; import java.util.List; public class Glavna { /** * @param args */ public static void main(String[] args) { XmlCreator xml = new XmlCreator(); List<Student> s = new ArrayList<Student>(); s.add(new Student("Zlatko", "Stamatov", 693)); s.add(new Student("Pece", "Stojcev", 234)); s.add(new Student("Julijana", "Taleska", 1000)); System.out.println(xml.create("test03.xml", s)); } }
Изврушвање.9.3.
9.3.б.
test03.xml
Задача.9.4.
Дссп која ќе има три класи. Првата клса да се вика “Glavna“ и да го има методот: public static void main(String[] args). Втората класа да се вика XmlCreator и да го има метод public String create(String fileName,List<Student> student). Методот да креира XML во кој ќе бидат внесени сите студенти од листата (секој елемент Student да има id со вредност редниот број на елементот од листата). XML-од да го има следниот облик:
<Studenti> <Student id="0">
Stamatov Zlatko 693 <Student id="1">
Stojcev Pece 234 Третата класа да се вика Student (да биде иста како во досега изработените задачи).
Код.9.4. package zadaca04; import java.io.File; import java.util.List; import import import import import import import import
javax.xml.parsers.DocumentBuilder; javax.xml.parsers.DocumentBuilderFactory; javax.xml.transform.Result; javax.xml.transform.Source; javax.xml.transform.Transformer; javax.xml.transform.TransformerFactory; javax.xml.transform.dom.DOMSource; javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document; import org.w3c.dom.Element;
public class XmlCreator { public String create(String fileName, List<Student> student) { try { DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document document = documentBuilder.newDocument(); Element root = (Element) document.createElement("Studenti");
for(int i=0;i<student.size();i++) { Element studentElement = (Element) document.createElement("Student");
// So metodot setAttribute se dodavaat atributi na elementite //setAttribute prima dva stringa, od koj prviot e ime na atributot, vtoriot vrednost studentElement.setAttribute("id",String.valueOf(i)); Element prezime = (Element) document.createElement("Prezime"); Element ime = (Element) document.createElement("Ime"); Element index = (Element) document.createElement("Index");
prezime.appendChild(document.createTextNode(student.get(i).getPrez ime())); ime.appendChild(document.createTextNode(student.get(i).getIme())); index.appendChild(document.createTextNode(String.valueOf(student.g et(i).getIndex()))); studentElement.appendChild(prezime); studentElement.appendChild(ime); studentElement.appendChild(index); root.appendChild(studentElement); } document.appendChild(root); Source source = new DOMSource(document); File file = new File(fileName); Result result = new StreamResult(file); Transformer transformer= TransformerFactory.newInstance().newTransformer(); transformer.transform(source,result); return "DONE!"; } catch (Exception e) { return e.toString(); } } } package zadaca04; public class Student { private String ime; private String prezime; private int index;
public Student(String ime, String prezime, int index) { this.ime = ime; this.prezime = prezime; this.index = index; } public String getIme() { return ime; } public void setIme(String ime) { this.ime = ime; } public int getIndex() { return index; } public void setIndex(int index) { this.index = index; } public String getPrezime() { return prezime; } public void setPrezime(String prezime) { this.prezime = prezime; } } package zadaca04; import java.util.ArrayList; import java.util.List; public class Glavna { /** * @param args */ public static void main(String[] args) { XmlCreator xml = new XmlCreator(); List<Student> s = new ArrayList<Student>(); s.add(new Student("Elena", "Zdraveska", 1093)); s.add(new Student("Petar", "Stojanov", 934)); s.add(new Student("Izabela", "Elenovska", 645)); System.out.println(xml.create("test04.xml", s)); } } Извршување.9.4.
9.4.б. test04.xml.