Zdrojový kód k prednáške

package sk.upjs.paz.prednaska08;

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

import sk.upjs.jpaz2.Turtle;
import sk.upjs.visualscanner.VisualScanner;

public class SmartTurtle extends Turtle {

    // zapis cisel do suboru - kod z minuleho tyzdna
        public void saveNumbersToFile(File file, int[] numbers) {
                // try with resources, printWriter sa zatvori automaticky
                try (PrintWriter pw = new PrintWriter(file)) {

                        pw.println(numbers.length);
                        for (int i = 0; i < numbers.length; i++) {
                                pw.print(numbers[i] + " ");
                        }

                } catch (FileNotFoundException e) {
                        System.out.println("problem so suborom");
                }
        }

    // citanie cisel zo suboru vo formate ako predosla metoda - teda pocet cisel je znamy
        public int[] loadNumbersFromFile(File file) {
                try (Scanner sc = new Scanner(file)) {

                        int arrayLength = sc.nextInt();
                        int[] array = new int[arrayLength];
                        for (int i = 0; i < arrayLength; i++) {
                                array[i] = sc.nextInt();
                        }
                        return array;

                } catch (FileNotFoundException e) {
                        System.out.println("problem so suborom");
                }
                return null;
        }

        public void printNumbersFromFile(File file) {
        // visualscanner na vizualizaciu prace so scannerom - nefunguje v try-with-resources
                VisualScanner sc = null;
                try {
                        sc = new VisualScanner(file);
            // oddelovac je (iba) mriezka
                        sc.useDelimiter("#");
            // kym je v subore dalsi token
                        while (sc.hasNext()) {
                // precita token ako string
                                String a = sc.next();
                                System.out.println(a);
                        }

                } catch (FileNotFoundException e) {
                        System.out.println("problem so suborom");
                } finally {
                        if (sc != null)
                                sc.close();
                }
        }

    // nacita mesta oddelene ciarkou
        public void loadCities(File file) {
                try (Scanner sc = new Scanner(file)) {
            // ak by sme chceli oddelovat znakom | tak sc.useDelimiter("\\|");

            // oddelujeme ciarkou a medzerou. Mozno by bolo vhodnejsie oddelovat iba ciarkou a medzeru odstranovat: city.trim()
                        sc.useDelimiter(", ");
                        while (sc.hasNext()) {
                                String city = sc.next();
                                System.out.println(city);
                        }

                } catch (FileNotFoundException e) {
                        System.out.println("problem so suborom");
                }
        }

    // nedokoncena metoda
        public String warmestCity(File file) {
                try (Scanner sc = new Scanner(file)) {
            // delimiter znak noveho riadka alebo ciarka - je to regularny vyraz, viac detailov v dokumentacii java triedy Pattern
                        sc.useDelimiter("\n|,");

            // kym je dalsi token, precita sa dvojica tokenov - string mesto a double cislo
                        while (sc.hasNext()) {
                                String city = sc.next();
                                System.out.println(city);
                // ak by nefungovalo - lebo caka desatinnu ciarku, treba pouzit useLocale
                                double temp = sc.nextDouble();
                                System.out.println(temp);
                        }

                } catch (FileNotFoundException e) {
                        System.out.println("problem so suborom");
                }

                return null;
        }

    // precita subor vo formate mesto,teplota a vrati mesto s najvyssou teplotou
        public String warmestCityScanner(File file) {
        // premenne s malymi hodnotami
                double maxTemp = Double.MIN_VALUE;
                String maxCity = "";
                try (Scanner sc = new Scanner(file)) {
            // citanie po riadkoch
                        while (sc.hasNextLine()) {
                                String line = sc.nextLine();
                                System.out.println(line);

                                // Kosice,3.9
                // scanner ktory cita string reprezentujuci aktualne precitany riadok
                                Scanner citacRiadka = new Scanner(line);
                // oddelovac je ciarka
                                citacRiadka.useDelimiter(",");
                                String city = citacRiadka.next();
                                double temp = citacRiadka.nextDouble();
                // aktualizacia max hodnoty
                                if (temp > maxTemp) {
                                        maxCity = city;
                                        maxTemp = temp;
                                }
                // zatvorenie scannera
                                // citacRiadka.close();
                        }
                } catch (FileNotFoundException e) {
                        System.out.println("problem so suborom");
                }

                return maxCity;
        }

}
package sk.upjs.paz.prednaska08;

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

import sk.upjs.jpaz2.*;

public class Launcher {

        public static void main(String[] args) {
        // adresovanie triedy aj s nazvom balicka
                //sk.upjs.jpaz2.WinPane winpane = new sk.upjs.jpaz2.WinPane();
                SmartTurtle franklin = new SmartTurtle();
                int[] array = {3, -23, 56, 0};
                franklin.saveNumbersToFile(new File("cisla.txt"), array);

        // precita cisla zo suboru
                int[] newArray = franklin.loadNumbersFromFile(new File("cisla.txt"));
                System.out.println(Arrays.toString(newArray));

                //franklin.printNumbersFromFile(new File("numbers.txt"));

                System.out.println("------");
                franklin.loadCities(new File("cities.txt"));

                System.out.println("------");
                franklin.warmestCity(new File("weather.txt"));

                System.out.println("------");
                String res = franklin.warmestCityScanner(new File("weather.txt"));
                System.out.println(res);

        // System.err - vypise cervenou farbou, v eclipse to ide nezavisle od System.out a preto moze byt prehodene poradie
                System.err.println("============");
        // jednoduche menu s nacitavanim z konzoly
                System.out.println("Zadaj cislo, Ak chces skoncit zadaj -1");
                Scanner sc = new Scanner(System.in);
                while (sc.hasNextInt()) {
                        int number = sc.nextInt();
                        if (number == -1) {
                                break;
                        }
                        System.out.println(Math.sqrt(number));
                }

        }
}

Visual scanner dependency - pridať do pom.xml

<dependency>
    <groupId>sk.upjs</groupId>
    <artifactId>visual-scanner</artifactId>
    <version>1.0.0</version>
</dependency>