import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; /** * Calcula promedios de ventas en temporada baja y alta de una tienda * de articulos de playa */ public class Negocio1 { /** * Gets data from standard input */ private Scanner input = null; private Sucursal carrillo = null; private Sucursal liberia = null; private Sucursal sardinal = null; /** * Start the execution of the solution * @param args Command line arguments */ public static void main(String args[]) { Negocio1 negocio1 = new Negocio1(); negocio1.run(); } /** * Run the solution. This method is called from main() */ public void run() { try { // Create object to read data from standard input this.input = new Scanner( new File("datos1.txt") ); //this.input = new Scanner( System.in ); this.crearSucursales(); this.leerDatos(); this.imprimirEstadisticas(); // Close the standard input this.input.close(); } catch ( FileNotFoundException excepcion ) { System.err.println( excepcion ); } } public void crearSucursales() { this.carrillo = new Sucursal("Carrillo"); this.liberia = new Sucursal("Liberia"); this.sardinal = new Sucursal("Sardinal"); } public void leerDatos() { // 28/06/2017 Carrillo 12490 this.input.useDelimiter("[\\s/]+"); while ( this.input.hasNextInt() ) { int dia = this.input.nextInt(); int mes = this.input.nextInt(); int anno = this.input.nextInt(); String ubicacion = this.input.next(); double cierreCaja = this.input.nextDouble(); switch ( ubicacion ) { case "Carrillo": this.carrillo.agregarCierreCaja(mes, cierreCaja); break; case "Liberia": this.liberia.agregarCierreCaja(mes, cierreCaja); break; case "Sardinal": this.sardinal.agregarCierreCaja(mes, cierreCaja); break; default: System.err.println("Sucursal desconocida: " + ubicacion ); break; } } } public void imprimirEstadisticas() { // TIENDA BAJA ALTA // =============== =============== =============== // Carrillo 20,745.00 0.00 // Liberia 0.00 196,455.00 // Sardinal 0.00 159,454.25 System.out.println("TIENDA BAJA ALTA"); System.out.println("=============== =============== ==============="); this.carrillo.imprimirEstadisticas(); this.liberia.imprimirEstadisticas(); this.sardinal.imprimirEstadisticas(); } } class Sucursal { private String ubicacion = null; // Para calcular el promedio en temporada baja private double sumaBaja = 0.0; private long vecesBaja = 0; // Para calcular el promedio en temporada alta private double sumaAlta = 0.0; private long vecesAlta = 0; public Sucursal(String ubicacion) { this.ubicacion = ubicacion; } public void agregarCierreCaja(int mes, double cierreCaja) { if ( mes == 5 || mes == 6 || ( mes >= 8 && mes <= 11 ) ) { // un cierre de caja en temporada baja this.sumaBaja += cierreCaja; ++this.vecesBaja; } else { // un cierre de caja en temporada alta this.sumaAlta += cierreCaja; ++this.vecesAlta; } } public void imprimirEstadisticas() { // Carrillo 20,745.00 0.00 System.out.printf("%-15s %,15.2f %,15.2f%n" , this.ubicacion, this.promedioBaja(), this.promedioAlta()); } public double promedioBaja() { if ( vecesBaja == 0 ) return 0.0; else return this.sumaBaja / this.vecesBaja; } public double promedioAlta() { if ( vecesAlta == 0 ) return 0.0; else return this.sumaAlta / this.vecesAlta; } }