add exception

This commit is contained in:
Orange_dugongo 2016-11-27 18:41:28 +01:00
parent 3cff34caff
commit 2c06ca0601
5 changed files with 51 additions and 19 deletions

View File

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

View File

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

View File

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

View File

@ -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

View File

@ -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