From 2c06ca0601e4e0c70951b1ae9013df3d633ad282 Mon Sep 17 00:00:00 2001 From: Orange_dugongo Date: Sun, 27 Nov 2016 18:41:28 +0100 Subject: [PATCH] add exception --- src/AziendaExtends/Azienda.java | 33 +++++++++++++++++++++---------- src/AziendaExtends/Dirigente.java | 14 +++++++++++-- src/AziendaExtends/Operaio.java | 13 ++++++++++-- src/AziendaExtends/dipendenti.dat | 4 ++-- src/AziendaExtends/presenze.dat | 6 +++--- 5 files changed, 51 insertions(+), 19 deletions(-) diff --git a/src/AziendaExtends/Azienda.java b/src/AziendaExtends/Azienda.java index cd317e2..c7c707c 100644 --- a/src/AziendaExtends/Azienda.java +++ b/src/AziendaExtends/Azienda.java @@ -1,6 +1,7 @@ import java.util.Scanner; import java.io.PrintStream; import java.util.ArrayList; +import java.io.IOException; public class Azienda{ @@ -20,14 +21,20 @@ public class Azienda{ private Dipendente read(Scanner sc) throws Exception{ String id; - if(!sc.hasNext()) return null; - id=sc.next(); - if(id.equals("OP")) - return Operaio.read(sc); - else if(id.equals("DIR")) - return Dirigente.read(sc); - else + try{ + if(!sc.hasNext()) return null; + id=sc.next(); + if(id.equals("OP")) + return Operaio.read(sc); + else if(id.equals("DIR")) + return Dirigente.read(sc); + else + throw new IOException("Classe non presente"); + } + catch(IOException Exception){ + System.err.println("***"+Exception.getMessage()+"***"); return null; + } } public void calcolaPrint(Scanner scPresenze, PrintStream ps) throws Exception{ @@ -37,9 +44,15 @@ public class Azienda{ while(pres!=null){ dip=ricercaDipendentePerCodice(pres.getCodiceFiscale()); if(dip!=null){ - double paga=dip.calcoloPaga(pres.getOreLavoro()); - dip.print(ps); - ps.println("paga mensile: "+paga); + try{ + double paga=dip.calcoloPaga(pres.getOreLavoro()); + if(paga<=0) throw new IOException("Dipendente lavativo"); + dip.print(ps); + ps.println("paga mensile: "+paga); + } + catch(IOException Exception){ + System.err.println("Il dipendente "+dip.getNome()+" "+dip.getCnome()+" non ha svolto il suo lavoro"); + } } pres=Presenze.read(scPresenze); } diff --git a/src/AziendaExtends/Dirigente.java b/src/AziendaExtends/Dirigente.java index 540aa87..f85a855 100644 --- a/src/AziendaExtends/Dirigente.java +++ b/src/AziendaExtends/Dirigente.java @@ -1,5 +1,6 @@ import java.io.PrintStream; import java.util.Scanner; +import java.lang.RuntimeException; public class Dirigente extends Dipendente{ @@ -18,7 +19,7 @@ public class Dirigente extends Dipendente{ public static Dirigente read(Scanner sc) throws Exception{ String nome, cnome, areaResponsabilità, codiceFiscale; - double paga; + double paga=0; if(!sc.hasNext()) return null; codiceFiscale=sc.next(); if(!sc.hasNext()) return null; @@ -28,7 +29,16 @@ public class Dirigente extends Dipendente{ if(!sc.hasNext()) return null; areaResponsabilità=sc.next(); if(!sc.hasNextDouble()) return null; - paga=sc.nextDouble(); + try{ + paga=sc.nextDouble(); + if(paga<0) throw new RuntimeException("Paga minore di zero"); + } + + catch(RuntimeException Exception){ + System.err.println("***"+Exception.getMessage()+"***"); + System.err.println("Paga di "+nome+" "+cnome+" impostata come valore assoluto"); + paga=-paga; + } return new Dirigente(codiceFiscale, nome, cnome, paga, areaResponsabilità); } diff --git a/src/AziendaExtends/Operaio.java b/src/AziendaExtends/Operaio.java index 9f31956..4100127 100644 --- a/src/AziendaExtends/Operaio.java +++ b/src/AziendaExtends/Operaio.java @@ -31,7 +31,7 @@ public class Operaio extends Dipendente{ public static Operaio read(Scanner sc) throws Exception{ String nome, cnome, livello, funzione, codiceFiscale; - double paga; + double paga=0; if(!sc.hasNext()) return null; codiceFiscale=sc.next(); @@ -44,7 +44,16 @@ public class Operaio extends Dipendente{ if(!sc.hasNext()) return null; livello=sc.next(); if(!sc.hasNextDouble()) return null; - paga=sc.nextDouble(); + try{ + paga=sc.nextDouble(); + if(paga<0) throw new RuntimeException("Paga minore di zero"); + } + + catch(RuntimeException Exception){ + System.err.println("***"+Exception.getMessage()+"***"); + System.err.println("Paga di "+nome+" "+cnome+" impostata come valore assoluto"); + paga=-paga; + } return new Operaio(codiceFiscale, nome, cnome, paga, funzione, livello); } diff --git a/src/AziendaExtends/dipendenti.dat b/src/AziendaExtends/dipendenti.dat index edcd306..d21d885 100644 --- a/src/AziendaExtends/dipendenti.dat +++ b/src/AziendaExtends/dipendenti.dat @@ -2,9 +2,9 @@ OP GFYDFG67J15A789M Paperino Duck Operaio I 120 OP GDRSFG67B12Y456Y Pippo Goofy Operaio I 120 DIR HJKDTF34G11G134G Topolino Mouse R&D 600 OP GFHHHH56U77U894G Pluto Pluto Operaio I 120 -DIR GSDHBG12H34H765F Eta Beta Approvvigionamento 1000 +DIR GSDHBG12H34H765F Eta Beta Approvvigionamento -1000 OP MFGTYG12F44H897Y Qui Duck Operaio II 220 OP MGRFGH16J0JU908M Quo Duck Operaio II 220 -OP GSDHBG12H34H765F Qua Duck Operaio II 220 +OPP GSDHBG12H34H765H Qua Duck Operaio II 220 DIR XDDHBG12Y84H767J Paperino Fauntleroy Contabilità 330 DIR GSDTGB12H31E764Y Goku Son Personale 1000 diff --git a/src/AziendaExtends/presenze.dat b/src/AziendaExtends/presenze.dat index dacbc25..c4bc19a 100644 --- a/src/AziendaExtends/presenze.dat +++ b/src/AziendaExtends/presenze.dat @@ -1,10 +1,10 @@ GFYDFG67J15A789M 100 -GDRSFG67B12Y456Y 100 -HJKDTF34G11G134G 1000 +GDRSFG67B12Y456Y 0 +HJKDTF34G11G134G -1000 GFHHHH56U77U894G 200 GSDHBG12H34H765F 300 MFGTYG12F44H897Y 400 MGRFGH16J0JU908M 100 -GSDHBG12H34H765F 100 +GSDHBG12H34H765H 100 XDDHBG12Y84H767J 100 GSDTGB12H31E764Y 1000 \ No newline at end of file