Autor Tema: constructor in class cannot be applied to given types Java Ejercicio: CU00642B  (Leído 3191 veces)

mauriaguerrido

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Hola! Soy nuevo en este foro, hace poco empece este curso y hasta ahora iba todo bien, pero resulta que no me permite compilar (constructor in class cannot be applied to given types) la clase "Casa" y no logro entender por qué.

Class SalonCasa:
Código: [Seleccionar]
public class SalonCasa {
    private int numeroDeTelevisores;
    private String tipoSalon;
    //Constructor:
    public SalonCasa () {
        numeroDeTelevisores = 0;
        tipoSalon = "Desconocido";
    }
    //Setters:
    public void setNumeroDeTelevisores (int valorNumeroDeTelevisores) {
        numeroDeTelevisores = valorNumeroDeTelevisores;
    }
    public void setTipoSalon (String valorTipoSalon) {
        tipoSalon = valorTipoSalon;
    }
    //Getters:
    public int getNumeroDeTelevisores () {return numeroDeTelevisores; }
    public String getTipoSalon () {return tipoSalon; }
}

Class CocinaCasa:
Código: [Seleccionar]
public class CocinaCasa {
    private boolean esIndependiente;
    private int numeroDeFuegos;
    //Constructor:
    public CocinaCasa () {
        esIndependiente = false;
        numeroDeFuegos = 0;
    }
    //Setters
    public void setEsIndependiente (boolean valorEsIndependiente) {
        esIndependiente = valorEsIndependiente;
    }
    public void setNumeroDeFuegos (int valorNumeroDeFuegos) {
        numeroDeFuegos = valorNumeroDeFuegos;
    }
    //Getters
    public boolean getEsIndependiente () {return esIndependiente; }
    public int getNumeroDeFuegos () {return numeroDeFuegos; }
}

Class Casa:
Código: [Seleccionar]
public class Casa {
    private double superficie;
    private String direccion;
    private SalonCasa salon;
    private CocinaCasa cocina;
    //Constructor sin parámetros:
    public Casa () {
        superficie = 0;
        direccion = "Desconocido";
        salon = new SalonCasa ();
        cocina = new CocinaCasa ();
    }
    //Constructor con parámetros:
    public Casa (double valorSuperficie, String valorDireccion, SalonCasa objetoSalon, CocinaCasa objetoCocina) {
        superficie = valorSuperficie;
        direccion = valorDireccion;
        salon =  new SalonCasa (objetoSalon.getNumeroDeTelevisores(), objetoSalon.getTipoSalon());
        cocina = new CocinaCasa (objetoCocina.getEsIndependiente(), objetoCocina.getNumeroDeFuegos());
    }
    //Setters:
    public void setSuperficie (double valorSuperficie) {
        superficie = valorSuperficie;
    }
    public void setDireccion (String valorDireccion) {
        direccion = valorDireccion;
    }
    public void setSalon (SalonCasa objetoSalon) {
        salon = new SalonCasa (objetoSalon.getNumeroDeTelevisores(), 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 getSalon () {return salon; }
    public CocinaCasa getCocina () {return cocina; }
}

Gracias de antemano y Saludos!
« Última modificación: 10 de Abril 2015, 00:18 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola mauriaguerrido, el problema lo tienes en esta línea:

salon =  new SalonCasa (objetoSalon.getNumeroDeTelevisores(), objetoSalon.getTipoSalon());

Aquí estás intentando llamar a un constructor de la clase SalonCasa pasándole dos parámetros, sin embargo en la clase SalonCasa el único constructor que existe es este

    public SalonCasa () {
        numeroDeTelevisores = 0;
        tipoSalon = "Desconocido";
    }

Y este constructor no admite recibir parámetros.

Para corregir esto tendrías que definir un constructor en la clase SalonCasa que permita recibir parámetros (o usar new SalonCasa() sin parámetros).

Saludos

mauriaguerrido

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Hola Alex Rodríguez. Gracias por la respuesta, no veía el problema y era muy simple, como me dijiste lo solucione creando un constructor con parámetros en la clase SalonCasa y CocinaCasa.

Consulta: Hasta ahora puedo crear un objeto Casa1 y asignarle dos objetos a ese (Salon1 y Cocina1), pero para eso tengo que tener creado esos dos objetos. Como puedo hacer que al crear el objeto Casa1 me deje crear desde ahí esos dos objetos?

No tengo el léxico bien claro aun, siempre trato de releer los artículos pero al pasar a hacer lo practico (escribir código) se me van las palabras  :-[.

Espero que se comprenda, gracias por la ayuda!

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola, eso que comentas que estudia más adelante en el curso. Sigue avanzando paso a paso, más adelante se explica cómo hacerlo. Saludos.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".