Cvičenia: 7. týždeň - riešenia úloh

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

import sk.upjs.jpaz2.Turtle;

public class TurtleCommander extends Turtle {

        public int retazecNaCislo(String s, int defaultnaHodnota) {
                int hodnota = 0;
                try {
                        hodnota = Integer.parseInt(s);
                } catch (NumberFormatException e) {
                        hodnota = defaultnaHodnota;
                }

                return hodnota;
        }

        public void vypisAdresar(File adresar) {
                if (adresar == null || !adresar.isDirectory())
                        return;

                File[] subory = adresar.listFiles();
                for (int i = 0; i < subory.length; i++)
                        if (subory[i].isDirectory())
                                System.out.println("[" + subory[i].getName() + "]");

                for (int i = 0; i < subory.length; i++)
                        if (subory[i].isFile())
                                System.out.println(subory[i].getName());
        }

        public void trest(File suborNaTrest, String trestnaSprava, int pocet) {
                PrintWriter pw = null;
                try {
                        pw = new PrintWriter(suborNaTrest);
                        for (int i = 0; i < pocet; i++)
                                pw.println(trestnaSprava);
                } catch (Exception e) {
                        System.err.println(e.getMessage());
                } finally {
                        if (pw != null)
                                pw.close();
                }
        }

        public boolean suborSRovnakymMenom(File adresar1, File adresar2) {
                if (adresar1 == null || !adresar1.isDirectory())
                        return false;
                if (adresar2 == null || !adresar2.isDirectory())
                        return false;

                File[] subory1 = adresar1.listFiles();
                File[] subory2 = adresar2.listFiles();
                for (int i = 0; i < subory1.length; i++) {
                        if (!subory1[i].isFile())
                                continue;

                        for (int j = 0; j < subory2.length; j++)
                                if (subory2[j].isFile()
                                                && subory1[i].getName().equals(subory2[j].getName()))
                                        return true;
                }
                return false;
        }

        public int pocetSuborov(File adresar) {
                int pocet = 0;
                File[] subory = adresar.listFiles();
                for (int i = 0; i < subory.length; i++) {
                        if (subory[i].isFile())
                                pocet++;
                }
                return pocet;
        }

        public long velkostSuborovVAdresari(File adresar) {
                long vysledok = 0;
                File[] subory = adresar.listFiles();
                for (int i = 0; i < subory.length; i++) {
                        if (subory[i].isFile())
                                vysledok = vysledok + subory[i].length();
                }
                return vysledok;

        }

        public double priemer(String subor) {
                return priemer(new File(subor));
        }

        public double priemer(File subor) {
                Scanner citac = null;
                double sucet = 0, priemer = 0;
                int pocet = 0;
                try {
                        citac = new Scanner(subor);
                        while (citac.hasNextDouble()) {
                                sucet += citac.nextDouble();
                                pocet++;
                        }

                        priemer = sucet / pocet;
                } catch (Exception e) {
                        System.out.println(e.getMessage());
                } finally {
                        if (citac != null)
                                citac.close();
                }
                return priemer;
        }
}
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.PrintWriter;
import java.util.Locale;
import java.util.Scanner;

import sk.upjs.jpaz2.Turtle;
import sk.upjs.jpaz2.WinPane;

public class KlikaciaPlocha extends WinPane {

        // 0. stlpec pre hodnotu x, 1. stlpec pre hodnotu y, a posledny pre polomer
        private double[][] bodky = new double[1000][3];
        private int pocetBodiek = 0;
        private Turtle kreslic = new Turtle();

        public KlikaciaPlocha() {
                add(kreslic);
                kreslic.setVisible(false);
        }

        public void pridajBodku(double x, double y, double r) {
                bodky[pocetBodiek][0] = x;
                bodky[pocetBodiek][1] = y;
                bodky[pocetBodiek][2] = r;
                pocetBodiek++;

                kreslic.setPosition(x, y);
                kreslic.dot(r);
        }

        public void ulozKlikyDoSuboru(String cesta) {
                ulozKlikyDoSuboru(new File(cesta));
        }

        public void ulozKlikyDoSuboru(File subor) {
                PrintWriter pw = null;

                try {
                        pw = new PrintWriter(subor);

                        for (int i = 0; i < pocetBodiek; i++) {
                                double x = bodky[i][0];
                                double y = bodky[i][1];
                                double r = bodky[i][2];

                                pw.println(x + " " + y + " " + r);
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                } finally {
                        if (pw != null)
                                pw.close();
                }
        }

        public void nacitajKlikyZoSuboru(String cesta) {
                nacitajKlikyZoSuboru(new File(cesta));
        }

        public void nacitajKlikyZoSuboru(File subor) {
                // vymazeme plochu a bodky
                clear();
                pocetBodiek = 0;

                Scanner citac = null;

                try {
                        citac = new Scanner(subor);

                        // pocet ulozenych bodiek je rovnaky ako pocet riadkov
                        // v subore, takze kym existuje dalsi neprecitany
                        // riadok v subore, tak dovtedy citame
                        while (citac.hasNextLine()) {
                                // precitame jeden riadok - v nom su ulozene informacie
                                // o jednej bodke
                                String riadok = citac.nextLine();
                                // vytvorime si novy Scanner precitaneho riadku
                                // a precitame si potrebne parametre bodky
                                // POZOR NA NASTAVENIE POTREBNEHO LOCALE - IDEME
                                // CITAC REALNE CISLA
                                // citac vytvoreny zo String-u nemusime zatvarat
                                Scanner citacRiadku = new Scanner(riadok);
                                citacRiadku.useLocale(Locale.US);

                                double x = citacRiadku.nextDouble();
                                double y = citacRiadku.nextDouble();
                                double r = citacRiadku.nextDouble();

                                pridajBodku(x, y, r);
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                } finally {
                        if (citac != null)
                                citac.close();
                }
        }

        @Override
        protected void onMouseClicked(int x, int y, MouseEvent detail) {
                pridajBodku(x, y, 2 + Math.random() * 3);
        }
}
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Locale;
import java.util.Scanner;

import sk.upjs.jpaz2.Turtle;

public class TurtleCommander extends Turtle {

        public void unicodeKody(File suborNaTrest, int odKodu, int poKod) {
                PrintWriter pw = null;
                try {
                        pw = new PrintWriter(suborNaTrest);
                        for (int i = odKodu; i < poKod + 1; i++) {
                                char znak = (char) i;
                                pw.println(i + " : '" + znak + "'");
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                } finally {
                        if (pw != null)
                                pw.close();
                }
        }

        public int pocetRiadkov(File subor) {
                Scanner citac = null;
                int pocet = 0;
                try {
                        citac = new Scanner(subor);
                        while (citac.hasNextLine()) {
                                citac.nextLine();
                                pocet++;
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                } finally {
                        if (citac != null)
                                citac.close();
                }
                return pocet;
        }

        public int pocetRiadkov(String subor) {

                return pocetRiadkov(new File(subor));
        }

        public void vykonajPrikaz(String celyPrikaz) {
                Scanner citac = new Scanner(celyPrikaz);
                citac.useLocale(Locale.US);
                String prikaz = citac.next();
                if (prikaz.equalsIgnoreCase("center")) {
                        this.center();
                } else if (prikaz.equalsIgnoreCase("penDown")) {
                        this.penDown();
                } else if (prikaz.equalsIgnoreCase("penUp")) {
                        this.penUp();
                } else if (prikaz.equalsIgnoreCase("step")) {
                        this.step(citac.nextDouble());
                } else if (prikaz.equalsIgnoreCase("turn")) {
                        this.turn(citac.nextDouble());
                } else if (prikaz.equalsIgnoreCase("dot")) {
                        this.dot(citac.nextDouble());
                } else if (prikaz.equalsIgnoreCase("setPosition")) {
                        this.setPosition(citac.nextDouble(), citac.nextDouble());
                } else if (prikaz.equalsIgnoreCase("moveto")) {
                        this.moveTo(citac.nextDouble(), citac.nextDouble());
                }

        }

        public void podlaSuboru(String subor) {
                Scanner citac = null;
                try {
                        citac = new Scanner(new File(subor));
                        while (citac.hasNextLine()) {
                                String celyPrikaz = citac.nextLine();
                                this.vykonajPrikaz(celyPrikaz);
                        }
                } catch (FileNotFoundException e) {
                        e.printStackTrace();
                } finally {
                        if (citac != null)
                                citac.close();
                }

        }
}