Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: ady en 13 de Mayo 2017, 08:12

Título: constructor in class cannot be applied to given types required: no argu CU00642B
Publicado por: ady en 13 de Mayo 2017, 08:12
Hola buenas noches. Realizando el ejercicio de la clase CU00642B me encuentro con este error

constructor in class cannot be applied to given types required: no arguments...

, que por mas que lea y relea el código aún no comprendo el motivo del mismo.

El código de las clases SalonCasa y CocinaCasa ya lo verifiqué con otros posts y según las explicaciones y todo lo demás están correctos, por eso no los colocaré, solo dejaré el de la clase Casa que es el que me esta dando problemas y que aunque también lo he comparado con los códigos de otros posts y a mi parecer esta igual, quisiera que me explicaran el por que del error para entender mejor.

Dejaré unos comentarios en el código para que vean donde exactamente tengo el problema.

Casa
Código: [Seleccionar]
public class Casa{
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;

    //Constructor 1 sin parametros
    public Casa(){
        superficie = 0;
        direccion = "";
        salonCasa = new SalonCasa();
        cocina = new CocinaCasa();
    }
   
    //Constructor 2 con parametros
    public Casa(double valorSuperficie, String valorDireccion, SalonCasa objetoSalon, CocinaCasa objetoCocina){
        superficie = valorSuperficie;
        direccion = valorDireccion;
        salonCasa = new SalonCasa(objetoSalon.getNumeroTv(), objetoSalon.getTipoSalon());//Cuando declaro de esta manera me genera error
        cocina = new CocinaCasa();//Al declarar de esta manera no presenta errores
    }
 
    //Setters de la clase Casa
    public void setSuperficie(double valorSuperficie) { superficie = valorSuperficie; }
    public void setDireccion(String valorDireccion) { direccion = valorDireccion; }
   
    //Setters de otras clases que NO presentan errores
    public void setSalonCasa(SalonCasa objetoSalon) {
        salonCasa = new SalonCasa();
        salonCasa.setNumeroTv(objetoSalon.getNumeroTv());
        salonCasa.setTipoSalon(objetoSalon.getTipoSalon());
    }
    public void setCocina(CocinaCasa objetoCocina) {
        cocina = new CocinaCasa();
        cocina.setEsIndependiente(objetoCocina.getEsIndependiente());
        cocina.setNumeroDeFuegos(objetoCocina.getNumeroDeFuegos());
    }
   
    //Setters de otras clases que presentan errores
    public void setSalonCasa(SalonCasa objetoSalon) {
        salonCasa = new SalonCasa(objetoSalon.getNumeroTv(), objetoSalon.getTipoSalon()); }
    public void setCocina(CocinaCasa objetoCocina) {
        cocina = new CocinaCasa(objetoCocina.getEsIndependiente(), objetoCocina.getNumeroDeFuegos()); }

   
    //Getters
    public double getSuperficie(){ return superficie; }
    public String getDireccion(){ return direccion; }
    public SalonCasa getSalonCasa() { return salonCasa; }
    public CocinaCasa getCocina() {return cocina; }
   
}

Sé que tengo que usar uno de los dos setters para las otras clases, sólo que estoy colocando los dos para poder comprender porque uno si funciona y el otro no, igual al momento de crear el nuevo objeto en el constructor.

Gracias por su ayuda  :)
Título: Re:Error al declarar constructores con objetos como parámetros. Ejercicio CU00642B
Publicado por: pedro,, en 14 de Mayo 2017, 02:04
Buenas ady.

Intenta pegar siempre todos los códigos de las clases que estés usando.

El error que te da, dice que el constructor que tienes declarado en la clase SalonCasa no requiere ningún parámetro y en la instancia de SalonCasa que usas estás introduciendo dos parámetros.

Saludos. ;D
Título: Re:Error al declarar constructores con objetos como parámetros. Ejercicio CU00642B
Publicado por: ady en 15 de Mayo 2017, 02:06
Gracias Pedro, tendré en cuenta tu sugerencia en relación al código para mis próximas consultas.

Con respecto al error, eso quiere decir que dentro del constructor no puedo o no debería establecer los parámetros de esa forma?  O los estoy colocando mal?

Porque me estaba guiando con una de las respuestas del foro que tiene este código en el constructor, y la verdad quería probar de esa manera.

Código: [Seleccionar]
public void setCocina (CocinaCasa objetoCocina) {
        cocina = new CocinaCasa(objetoCocina.getEsIndependente(), objetoCocina.getNumeroDeFuegos() );
    }

Ese código esta en una respuesta que dan en este link
https://www.aprenderaprogramar.com/foros/index.php?topic=1238.0 (https://www.aprenderaprogramar.com/foros/index.php?topic=1238.0)

Disculpa si me pongo pesada con esto, solo que intento comprender bien el lenguaje.

Muchas gracias