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));
}
}