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

estebanmen

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Buenas en el ejercicio CU00642B del curso java desde cero tengo un problema a la hora de compilar el código de la clase Casa en el constructor 2, me aparece un error:

constructor SalonCasa in class SalonCasa cannot be applied to given types;
requiered: no arguments
found: int, java.lang.String
reason: actual and formal argument lists differ in lengh

The operator that you use here cannot be used for the
type of value that you are using it for. You are either
using the wrong type here, or the wrong operator.

Clase CocinaCasa:
Código: [Seleccionar]
public class CocinaCasa
{
    private boolean esIndependiente;
    private int numeroDeFuegos;

    public CocinaCasa()
    {
        esIndependiente = false;
        numeroDeFuegos = 0;
    }
   
    public void setEsIndependiente (boolean valorEsIndependiente){
        esIndependiente = valorEsIndependiente;
    }
    public void setNumeroDeFuegos (int valorNumeroDeFuegos){
        numeroDeFuegos = valorNumeroDeFuegos;
    }
       
    public boolean getEsIndependiente(){return esIndependiente;}
    public int getNumeroDeFuegos(){return numeroDeFuegos;}
}

Clase SalonCasa:
Código: [Seleccionar]
public class SalonCasa
{
    private int numeroDeTelevisores;
    private String tipoSalon;

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

    public void setNumeroDeTelevisores (int valorNumeroDeTelevisores){
        numeroDeTelevisores = valorNumeroDeTelevisores;
    }
    public void setTipoSalon (String valorTipoSalon){
        tipoSalon = valorTipoSalon;
    }
       
    public int getNumeroDeTelevisores(){return numeroDeTelevisores;}
    public String getTipoSalon(){return tipoSalon;}
}

Clase Casa:
Código: [Seleccionar]
public class Casa
{
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;
    //Constructor 1
    public Casa()
    {
        superficie = 0;
        direccion = "desconocido";
        salonCasa = new SalonCasa();
        cocina = new CocinaCasa();
    }
    //Constructor 2
    public Casa(double valorSuperficie, String valorDireccion, SalonCasa objetoSalon, CocinaCasa objetoCocina)
    {
        superficie = valorSuperficie;
        direccion = valorDireccion;
        salonCasa = new SalonCasa(objetoSalon.getNumeroDeTelevisores(), objetoSalon.getTipoSalon());//ERROR
        cocina = new CocinaCasa(objetoCocina.getEsIndependiente(), objetoCocina.getNumeroDeFuegos());//ERROR
    }
    //setters
    public void setSalonCasa (SalonCasa objetoSalon) {
        salonCasa = new SalonCasa();
        salonCasa.setNumeroDeTelevisores(objetoSalon.getNumeroDeTelevisores());
        salonCasa.setTipoSalon(objetoSalon.getTipoSalon());
    }
    public void setCocinaCasa (CocinaCasa objetoCocina){
        cocina = new CocinaCasa();
        cocina.setEsIndependiente(objetoCocina.getEsIndependiente());
        cocina.setNumeroDeFuegos(objetoCocina.getNumeroDeFuegos());
    }
    public void setSuperficie(double valorSuperficie){superficie = valorSuperficie;}
    public void setDireccion (String valorDireccion){direccion = valorDireccion;}
    //getters
    public double getSuperficie(){return superficie;}
    public String getDireccion() {return direccion;}
}
« Última modificación: 30 de Noviembre 2015, 13:23 por Alex Rodríguez »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:CU00642B paso de objetos como parámetros a un constructor java.
« Respuesta #1 en: 26 de Noviembre 2015, 23:31 »
Hola estebanmen.

Cuando se ejecutan estas dos lineas en la clase Casa:

Código: [Seleccionar]
salonCasa = new SalonCasa(objetoSalon.getNumeroDeTelevisores(), objetoSalon.getTipoSalon());//ERROR
cocina = new CocinaCasa(objetoCocina.getEsIndependiente(), objetoCocina.getNumeroDeFuegos());//ERROR

estas diciendo que se cree un objeto SalonCasa que contenga dos parámetros, pero en el constructor de la clase SalonCasa que tiene esa clase, no requiere ningún parámetro, por eso te da ese error, igual te pasa cuando creas el objetos CocinaCasa.

para solucionarlos podrías cambiar el constructor que tienes o agregar uno nuevo como este:

Código: [Seleccionar]
public SalonCasa(int numeroTv, String tipoDeSalon){
        numeroDeTelevisores = numeroTv;
        tipoSalon = tipoDeSalon;
}

Saludos.

estebanmen

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Re:CU00642B paso de objetos como parámetros a un constructor java.
« Respuesta #2 en: 27 de Noviembre 2015, 11:30 »
Muchas gracias Pedro, problema resuelto , me faltaba el constructor con parámetros tanto en la clase SalonCasa como en la Clase CocinaCasa ;) ;) ;)

Clase SalonCasa:

Código: [Seleccionar]
public class SalonCasa
{
    private int numeroDeTelevisores;
    private String tipoSalon;

    public SalonCasa()
    {
        numeroDeTelevisores = 0;
        tipoSalon = "desconocido";
    }
    public SalonCasa(int numeroTv, String tipoDeSalon){
            numeroDeTelevisores = numeroTv;
            tipoSalon = tipoDeSalon;
    }
   
    public void setNumeroDeTelevisores (int valorNumeroDeTelevisores){
        numeroDeTelevisores = valorNumeroDeTelevisores;
    }
    public void setTipoSalon (String valorTipoSalon){
        tipoSalon = valorTipoSalon;
    }
       
    public int getNumeroDeTelevisores(){return numeroDeTelevisores;}
    public String getTipoSalon(){return tipoSalon;}
}

Clase CocinaCasa:

Código: [Seleccionar]
public class CocinaCasa
{
    private boolean esIndependiente;
    private int numeroDeFuegos;

    public CocinaCasa()
    {
        esIndependiente = false;
        numeroDeFuegos = 0;
    }
    public CocinaCasa(boolean valorEsIndependiente, int NFuegos){
        esIndependiente = valorEsIndependiente;
        numeroDeFuegos = NFuegos;       
    }
   
    public void setEsIndependiente (boolean valorEsIndependiente){
        esIndependiente = valorEsIndependiente;
    }
    public void setNumeroDeFuegos (int valorNumeroDeFuegos){
        numeroDeFuegos = valorNumeroDeFuegos;
    }
       
    public boolean getEsIndependiente(){return esIndependiente;}
    public int getNumeroDeFuegos(){return numeroDeFuegos;}
}

Clase Casa:

Código: [Seleccionar]
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;
    //Constructor 1
    public Casa()
    {
        superficie = 0;
        direccion = "desconocido";
        salonCasa = new SalonCasa();
        cocina = new CocinaCasa();
    }
    //Constructor 2
    public Casa(double valorSuperficie, String valorDireccion, SalonCasa objetoSalon, CocinaCasa objetoCocina)
    {
        superficie = valorSuperficie;
        direccion = valorDireccion;
        salonCasa = new SalonCasa(objetoSalon.getNumeroDeTelevisores(), objetoSalon.getTipoSalon());//ERROR
        cocina = new CocinaCasa(objetoCocina.getEsIndependiente(), objetoCocina.getNumeroDeFuegos());//ERROR
    }
    //setters
    public void setSalonCasa (SalonCasa objetoSalon) {
        salonCasa = new SalonCasa();
        salonCasa.setNumeroDeTelevisores(objetoSalon.getNumeroDeTelevisores());
        salonCasa.setTipoSalon(objetoSalon.getTipoSalon());
    }
    public void setCocinaCasa (CocinaCasa objetoCocina){
        cocina = new CocinaCasa();
        cocina.setEsIndependiente(objetoCocina.getEsIndependiente());
        cocina.setNumeroDeFuegos(objetoCocina.getNumeroDeFuegos());
    }
    public void setSuperficie(double valorSuperficie){superficie = valorSuperficie;}
    public void setDireccion (String valorDireccion){direccion = valorDireccion;}
    //getters
    public double getSuperficie(){return superficie;}
    public String getDireccion() {return direccion;}
    public SalonCasa getSalonCasa(){return salonCasa;}
    public CocinaCasa getCocinaCasa(){return cocina;}
}

Muchas gracias.

 

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".