Zdrojový kód z prednášky 2.11.2011

Trieda Vynimkarka (súbor Vynimkarka.java) rozširujúca triedu Turtle. V metóde kladnyPriemer je ukázané, akým spôsobom sa majú ošetriť výnimky, ošetriteľné podmienkami. Metóda sucetCisielZoStringu demonštruje použitie try-catch bloku pre výnimku NumberFormatException, ktorá sa nedá ošetriť jednoduchou podmienkou.

import sk.upjs.jpaz2.Turtle;

public class Vynimkarka extends Turtle {

        /*
         * ak pride v poli null tak vratim true
         * ak k bude vacsie ako velkost pola tak sa spracuje cele pole
         * ak k, alebo velkost pola bude nula, vratim true
         */

        public boolean kladnyPriemer(int[] pole, int k) {
                if (pole == null) {
                        return true;
                }
                if (k > pole.length) {
                        k = pole.length;
                }
                if (k == 0) {
                        return true;
                }
                int sucet = 0;
                for (int i = 0; i < k; i++) {
                        sucet = sucet + pole[i];
                }
                if (sucet/k >= 0) {
                        return true;
                } else {
                        return false;
                }
        }

        /*
         * scita vsetky cele cisla vo vstupe typu "234 12 -35 5"
         * co nevie skonvertovat na cele cislo, ignoruje
         */

        public int sucetCisielZoStringu(String retazec) {
                int sucet = 0;
                String buduceCislo = "";
                try {
                        int i= 0;
                        while(true) {
                                if (retazec.charAt(i) == ' ') {
                                        try {
                                                int pomocne = Integer.parseInt(buduceCislo);
                                                sucet += pomocne;
                                        } catch (NumberFormatException e) {
                                                System.err.println("Nasiel som cislo "+ buduceCislo +
                                                " ktore neviem skonvertovat - neberiem ho do uvahy ");
                                        }
                                        buduceCislo = "";
                                } else {
                                        buduceCislo += retazec.charAt(i);
                                }
                                i++;
                        }
                } catch (StringIndexOutOfBoundsException e) {
                }
                sucet += Integer.parseInt(buduceCislo);
                return sucet;
        }
}

Spúšťacia trieda k triede Vynimkarka (Spustac.java):

public class Spustac {

        public static void main(String[] args) {
                Vynimkarka kortynacka = new Vynimkarka();
                int[] pole = {20, -1, 0, 300};
               System.out.println(kortynacka.kladnyPriemer(pole, -3));
                String cisla = "3a0 400 3 -40 1";
                System.out.println(kortynacka.sucetCisielZoStringu(cisla));
        }
}

Trieda Adresarka (súbor Adresarka.java) rozširujúca triedu Turtle. Cieľom je ukázať prácu s triedami File, PrintWriter a Scanner

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;

import sk.upjs.jpaz2.Turtle;


public class Adresarka extends Turtle {

        /*
         * vypise vsetky subory a adresare v adresari na vstupe
         * ak nejde o adresar (je to subor alebo neexistuje) nevypise nic
         */

        public void vypisObsahAdresara(File adresar) {
                if (adresar == null) {
                        return;
                }
                if (! adresar.isDirectory()) {
                        System.err.println("Toto nie je adresar: "+ adresar.getAbsolutePath());
                }
                String[] obsah = adresar.list();
                for (int i = 0; i < obsah.length; i++) {
                        System.out.println(obsah[i]);
                }
        }

        /*
         * vypise mena a velkosti vsetkych suborov v danom adreari s priponou .mp3
         * ak nejde o adresar (je to subor alebo neexistuje) nevypise nic
         */

        public void vypisEmPeTrojky(File adresar) {
                if (adresar == null) {
                        return;
                }
                if (! adresar.isDirectory()) {
                        System.err.println("Toto nie je adresar: "+ adresar.getAbsolutePath());
                }
                File[] obsah = adresar.listFiles();
                for (int i = 0; i < obsah.length; i++) {
                        if (obsah[i].isFile() && (obsah[i].getName().endsWith(".mp3")))
                                System.out.println(obsah[i].getName() +" "+ obsah[i].length());
                }
        }

        /*
         * do prveho riadku daneho suboru zapise velkost pola
         * do druheho riadku tohto suboru zapise prvky tohoto pola
         */

        public void zapisPoleDoSuboru(int[] pole, File subor) {
                PrintWriter pw = null;
                try {
                        pw = new PrintWriter(subor);
                        pw.println(pole.length);
                        for (int i = 0; i < pole.length; i++) {
                                pw.print(pole[i]+ " ");
                        }       
                } catch (FileNotFoundException e) {
                        System.err.println("Subor " + subor + " neexistuje");
                } finally {
                        if (pw !=null)
                                pw.close();
                }
        }

        /*
         * predpoklada na vstupe nazov suboru, v ktorom je najprv napisana
         * velkost pola a nasledne prvky tohoto pola s maximalne takou dlzkou
         * ako uvadzalo prve cislo, inak to vyhodi ArrayIndexOutOfBoundsException
         */

        public int[] nacitajPoleZoSuboru(String nazovSuboru) {
                File subor = new File(nazovSuboru);
                Scanner citac = null;
                int[] pole = null;
                try {
                        citac = new Scanner(subor);
                        int dlzka = citac.nextInt();
                        pole = new int[dlzka];
                        int i = 0;
                        while(citac.hasNextInt()) {
                                pole[i] = citac.nextInt();
                                i++;
                        }
                } catch (FileNotFoundException e) {
                        System.err.println("Subor " + subor + " neexistuje");
                } finally {
                        if (citac !=null)
                                citac.close();
                }
                return pole;
        }
}

Spúšťacia trieda k projektu "Adresarka" (Spustac2.java).

import java.io.File;
import java.util.Arrays;

public class Spustac2 {

        public static void main(String[] args) {
                Adresarka adresarka = new Adresarka();
                File adresar = new File("/home/gursky/mp3/metallica");
                adresarka.vypisEmPeTrojky(adresar);
                File subor = new File("obrazPola.txt");
                adresarka.zapisPoleDoSuboru(pole, subor);
                int[] pole2 = adresarka.nacitajPoleZoSuboru("obrazPola.txt");
                System.out.println(Arrays.toString(pole2));
        }
}