programmazione-java/src/FigureGeometriche/Manager.java

73 lines
1.8 KiB
Java
Raw Permalink Normal View History

2016-11-07 17:01:48 +00:00
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Scanner;
public class Manager{
public Manager(Scanner sc) throws Exception{
figure = new ArrayList<FiguraGeometrica>();
2016-11-07 17:31:04 +00:00
FiguraGeometrica fg=read(sc);
2016-11-09 17:41:40 +00:00
while(fg!=null){//Alla prima lettura nulla interrompe l'intero processo di lettura
2016-11-07 17:01:48 +00:00
figure.add(fg);
2016-11-07 17:31:04 +00:00
fg=read(sc);
}
}
private static FiguraGeometrica read(Scanner sc) throws Exception{
FiguraGeometrica fg;
String tipo;
if(!sc.hasNext()) return null;
tipo=sc.next();
if(tipo.equals("Regolare"))
fg=FiguraRegolare.read(sc);
else if(tipo.equals("Rettangolo"))
fg=Rettangolo.read(sc);
2016-11-09 17:41:40 +00:00
else //Qualsiasi cosa diversa da rettangolo e regolare viene letta come cerchio
2016-11-07 17:31:04 +00:00
fg=Cerchio.read(sc);
return fg;
2016-11-07 17:01:48 +00:00
}
2016-11-09 17:17:16 +00:00
public FiguraGeometrica getMax(String tipo){
Confrontatore conf = null;
if(tipo.equals("perimetro")) conf = new ConfrontoPerimetro();
if(tipo.equals("area")) conf = new ConfrontoArea();
2016-11-07 17:01:48 +00:00
FiguraGeometrica max = figure.get(0);
for (int i = 1; i < figure.size(); i++)
2016-11-09 17:17:16 +00:00
if (!conf.confronto(max, figure.get(i)))
2016-11-07 17:01:48 +00:00
max = figure.get(i);
2016-11-07 17:31:04 +00:00
return max;
2016-11-07 17:01:48 +00:00
}
2016-11-07 17:41:36 +00:00
2016-11-09 17:17:16 +00:00
public FiguraGeometrica getMin(String tipo){
Confrontatore conf = null;
if(tipo.equals("perimetro")) conf = new ConfrontoPerimetro();
if(tipo.equals("area")) conf = new ConfrontoArea();
2016-11-07 17:41:36 +00:00
FiguraGeometrica max = figure.get(0);
for (int i = 1; i < figure.size(); i++)
2016-11-09 17:17:16 +00:00
if (conf.confronto(max, figure.get(i)))
2016-11-07 17:41:36 +00:00
max = figure.get(i);
2016-11-09 17:17:16 +00:00
2016-11-07 17:41:36 +00:00
return max;
}
2016-11-07 17:01:48 +00:00
public void print(PrintStream ps){
2016-11-09 17:30:39 +00:00
for(FiguraGeometrica fg: figure){
if(fg instanceof FiguraRegolare)
ps.print("Regolare ");
else if(fg instanceof Rettangolo)
ps.print("Rettangolo ");
else
ps.print("Cerchio ");
2016-11-07 17:01:48 +00:00
fg.print(ps);
2016-11-09 17:30:39 +00:00
}
2016-11-07 17:01:48 +00:00
}
private ArrayList<FiguraGeometrica> figure;
}