diff --git a/src/Temi d'esame/Albergo/Albergo.java b/src/Temi d'esame/Albergo/Albergo.java new file mode 100644 index 0000000..4f43466 --- /dev/null +++ b/src/Temi d'esame/Albergo/Albergo.java @@ -0,0 +1,80 @@ +import java.util.Scanner; +import java.io.PrintStream; + +public class Albergo{ + + public Albergo(String nome, double prezzo, boolean tv, boolean aria, boolean frigo, boolean internet){ + this.nome=nome; + this.prezzo=prezzo; + this.tv=tv; + this.frigo=frigo; + this.internet=internet; + this.aria=aria; + } + + public String getNome(){ + return nome; + } + + public double getPrezzo(){ + return prezzo; + } + + public boolean hasTV(){ + return tv; + } + + public boolean hasFrigo(){ + return frigo; + } + + public boolean hasInternet(){ + return internet; + } + + public boolean hasAria(){ + return aria; + } + + public static Albergo read(Scanner sc){ + String nome; + double prezzo; + boolean tv, frigo, internet, aria; + + if(!sc.hasNextLine()) return null; + nome=sc.nextLine(); + if(!sc.hasNextLine()) return null; + prezzo=Double.parseDouble(sc.nextLine()); + if(!sc.hasNextLine()) return null; + tv=sc.nextLine().equalsIgnoreCase("SI"); + if(!sc.hasNextLine()) return null; + aria=sc.nextLine().equalsIgnoreCase("SI"); + if(!sc.hasNextLine()) return null; + frigo=sc.nextLine().equalsIgnoreCase("SI"); + if(!sc.hasNextLine()) return null; + internet=sc.nextLine().equalsIgnoreCase("SI"); + + return new Albergo(nome, prezzo, tv, aria, frigo, internet); + } + + public void print(PrintStream ps){ + String boole; + ps.println(nome); + ps.println(prezzo); + boole=tv?"SI":"NO"; + ps.println(boole); + boole=aria?"SI":"NO"; + ps.println(boole); + boole=frigo?"SI":"NO"; + ps.println(boole); + boole=internet?"SI":"NO"; + ps.println(boole); + } + + private String nome; + private double prezzo; + private boolean tv; + private boolean frigo; + private boolean internet; + private boolean aria; +} \ No newline at end of file diff --git a/src/Temi d'esame/Albergo/Prog-2013-01-10.pdf b/src/Temi d'esame/Albergo/Prog-2013-01-10.pdf new file mode 100644 index 0000000..40c70fb Binary files /dev/null and b/src/Temi d'esame/Albergo/Prog-2013-01-10.pdf differ diff --git a/src/Temi d'esame/Albergo/Test.java b/src/Temi d'esame/Albergo/Test.java new file mode 100644 index 0000000..71a5f50 --- /dev/null +++ b/src/Temi d'esame/Albergo/Test.java @@ -0,0 +1,9 @@ +import java.util.Scanner; +import java.io.File; + +public class Test{ + public static void main(String [] args)throws Exception{ + Trivago tri=new Trivago(new Scanner(new File("albergo.dat"))); + tri.filtroTV().print(System.out); + } +} \ No newline at end of file diff --git a/src/Temi d'esame/Albergo/Trivago.java b/src/Temi d'esame/Albergo/Trivago.java new file mode 100644 index 0000000..572890d --- /dev/null +++ b/src/Temi d'esame/Albergo/Trivago.java @@ -0,0 +1,131 @@ +import java.util.Scanner; +import java.util.LinkedList; +import java.io.PrintStream; +import java.util.function.Predicate; + +public class Trivago{ + + public Trivago(Scanner sc){ + list=new LinkedList(); + + Albergo a=Albergo.read(sc); + while(a!=null){ + list.add(a); + a=Albergo.read(sc); + } + } + + private Trivago(LinkedList newList){ + this.list=newList; + } + + public void print(PrintStream ps){ + for(Albergo a: list){ + a.print(ps); + ps.println("****"); + } + } + + private Trivago filtro(Predicate p){ + LinkedList listFilter = new LinkedList(); + for(Albergo a: list) + if(p.test(a)) + listFilter.add(a); + + return new Trivago(listFilter); + } + + public Trivago filtroTV(){ + return filtro(new TVPredicate()); + } + + public Trivago filtroAria(){ + return filtro(new AriaPredicate()); + } + + public Trivago filtroFrigo(){ + return filtro(new FrigoPredicate()); + } + + public Trivago filtroInternet(){ + return filtro(new InternetPredicate()); + } + + public Trivago filtroMaggiore(double prezzo){ + return filtro(new MaggiorePredicate(prezzo)); + } + + public Trivago filtroMinore(double prezzo){ + return filtro(new MinorePredicate(prezzo)); + } + + public Trivago filtroNome(String nome){ + return filtro(new NomePredicate(nome)); + } + + + + private LinkedList list; +} + +class TVPredicate implements Predicate{ + public boolean test(Albergo a){ + return a.hasTV(); + } +} + +class AriaPredicate implements Predicate{ + public boolean test(Albergo a){ + return a.hasAria(); + } +} + +class FrigoPredicate implements Predicate{ + public boolean test(Albergo a){ + return a.hasFrigo(); + } +} + +class InternetPredicate implements Predicate{ + public boolean test(Albergo a){ + return a.hasInternet(); + } +} + +class MaggiorePredicate implements Predicate{ + + public MaggiorePredicate(double prezzo){ + this.prezzo=prezzo; + } + + public boolean test(Albergo a){ + return a.getPrezzo()>=prezzo?true:false; + } + + private double prezzo; +} + +class MinorePredicate implements Predicate{ + + public MinorePredicate(double prezzo){ + this.prezzo=prezzo; + } + + public boolean test(Albergo a){ + return a.getPrezzo()<=prezzo?true:false; + } + + private double prezzo; +} + +class NomePredicate implements Predicate{ + public NomePredicate(String nome){ + this.nome=nome; + } + + public boolean test(Albergo a){ + return a.getNome().equals(nome); + } + + private String nome; +} \ No newline at end of file diff --git a/src/Temi d'esame/Albergo/albergo.dat b/src/Temi d'esame/Albergo/albergo.dat new file mode 100644 index 0000000..4796cf9 --- /dev/null +++ b/src/Temi d'esame/Albergo/albergo.dat @@ -0,0 +1,18 @@ +Miramonti +330 +SI +NO +NO +SI +Olimpia +660 +NO +SI +SI +NO +Rosa +540 +SI +NO +SI +SI \ No newline at end of file