Este código no controla duplicados en las categorías, modificarlo para que si lo haga:
package h.presupuestos;
import java.util.Scanner;
import java.util.ArrayList;
public class HPresupuestos {
public static void main(String[] args) {
Scanner leo = new Scanner(System.in);
String linea;
String palabras [];
Categoria leida;
Empresa empGana,empActual;
empGana= new Empresa();
linea=leo.nextLine();
while (!linea.equalsIgnoreCase("FIN")) {
empActual = new Empresa(linea);
linea=leo.nextLine();
palabras=linea.split(" ");
while (!(palabras[1].equals("0") && palabras[2].equals("0") && palabras[3].equals("0"))) {
leida= new Categoria(palabras[0].charAt(0),Double.parseDouble(palabras[1]),Double.parseDouble(palabras[2]),Double.parseDouble(palabras[3]));
empActual.pushCategoria(leida);
linea=leo.nextLine();
palabras=linea.split(" ");
}
if ((empGana.nombre.equals("primera") || empActual.getPresupuesto()<empGana.getPresupuesto()) ||(empActual.getPresupuesto()==empGana.getPresupuesto()&&empActual.getHoras()<empGana.getHoras()))
{
empGana=empActual;
}
linea=leo.nextLine();
}
System.out.println(empGana.nombre+" "+empGana.getHoras());
}
}
class Categoria{
private char letra;
private double precio;
private double horas;
public Categoria(char letra,double horas,double precioHora,double materiales) {
this.letra = letra;
this.horas=horas;
this.precio = calcularPrecio(horas,precioHora,materiales);
}
public double getHoras() {
return horas;
}
private double calcularPrecio(double horas,double precioHora,double materiales)
{
return ((horas*precioHora)+materiales);
}
public char getLetra() {
return letra;
}
public void setLetra(char letra) {
this.letra = letra;
}
public double getPrecio() {
return precio;
}
}
class Empresa{
public String nombre;
ArrayList<Categoria> tareas;
public Empresa(String nombre) {
this.nombre = nombre;
tareas = new ArrayList<>();
}
public Empresa() {
nombre="primera";
}
public void pushCategoria(Categoria una){
tareas.add(una);
}
public double getHoras(){
double total=0;
for (Categoria categoria : tareas) {
total+=categoria.getHoras();
}
return total;
}
public double getPresupuesto(){
double total=0;
for (Categoria categoria : tareas) {
total+=categoria.getPrecio();
}
return total;
}
}
No hay comentarios:
Publicar un comentario