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

momo

  • Principiante
  • **
  • Mensajes: 64
    • Ver Perfil
Por Favor Me pueden ayudar el ejercicio que hice  me manda un error que no se como solucionarlo


El ERROR ES :
constructor SalonCasa in class SalonCasa cannot be appliedto given types;
required:no arguments; found int,java.lang.String; reason:actual and formal argument lists differ in length

Este Error se encuentra en la clase casa .


CLASE CASA:
Código: [Seleccionar]

public class Casa
  {
      //ATRIBUTOS
      private double superficie;
      private String direccion;
      private SalonCasa salonCasa;
      private CocinaCasa cocina;
     
     
      public Casa()//CONSTRUCTOR
      {
          superficie=0.0;
          direccion="";
          salonCasa=new SalonCasa();
          cocina=new CocinaCasa();
       
      }
      public Casa(SalonCasa objetoSalon,CocinaCasa objetoCocina)//CONSTRUCTOR 2
     
      {
          salonCasa= new SalonCasa(objetoSalon.getNumeroDeTelevisores(),objetoSalon.getTipoSalon());
          cocina=new CocinaCasa(objetoCocina.getEsIndependiente(),objetoCocina.getNumeroDeFuego());
                       
      }
     
      //Metodos setter para superficie y direccion
      public void setSuperficie(double valorSuperficie)
      {
          superficie=valorSuperficie;
      }
      public void setDireccion(String valorDireccion)
      {
          direccion=valorDireccion;
      }
     
     
      //metodo getter para superficie y direccion
      public double getSuperficie(){return superficie;}
      public String getDireccion(){return direccion;}
     
    }


CLASE SalonCasa:
Código: [Seleccionar]

public class SalonCasa
{
    //Atributos
    private int numeroDeTelevisores;
    private String tipoSalon;
   
    public SalonCasa()//Constructor
    {
        numeroDeTelevisores=0;
        tipoSalon="";   
    }
    //Metodo Setter
    public void setNumeroDeTelevisores(int valorNumeroDeTelevisores)
    {
        numeroDeTelevisores=valorNumeroDeTelevisores;
   
    }
    public void setTipoSalon(String valorTipoSalon)
    {
        tipoSalon=valorTipoSalon;
   
    }//Fin Metodo Setter
   
    //Metodo Getter
    public int getNumeroDeTelevisores(){return numeroDeTelevisores;}
    public String getTipoSalon(){return tipoSalon;}
}//Fin class


CLASE CocinaCasa:

Código: [Seleccionar]
public class CocinaCasa
{
    private boolean esIndependiente;
    private int numeroDeFuego;
   
    public CocinaCasa()
    {
        esIndependiente=false;
        numeroDeFuego=0;
    }
    public void setEsIndependiente(boolean valorEsIndependiente)
    {
        esIndependiente=valorEsIndependiente;
    }
    public void setNumeroDeFuego(int valorNumeroDeFuego)
    {
        numeroDeFuego=valorNumeroDeFuego;
   
    }
    public boolean getEsIndependiente(){return esIndependiente;}
    public int getNumeroDeFuego(){return numeroDeFuego;}

}



por favor me pueden ayudar .
« Última modificación: 24 de Octubre 2014, 08:48 por Alex Rodríguez »

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Re:ENTREGA:CU00642B constructor in class cannot be appliedto given types
« Respuesta #1 en: 01 de Septiembre 2014, 20:18 »
Hola, el error lo tienes aquí:

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

Lo que te está diciendo es que estás tratando de crear un objeto de tipo SalonCasa invocando un constructor que no existe.

Si te fijas en tu código de la clase SalonCasa tienes sólo este constructor:

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

Este constructor no recibe parámetros. Por tanto sólo puedes usar new para un objeto SalonCasa así: salon = new SalonCasa()

Los paréntesis están vacíos porque no tienes ningún constructor con parámetros.

Para resolver esto tienes dos opciones:

a) Eliminar ese constructor en la clase Casa

b) Definir un nuevo constructor, que sí reciba parámetros, en la clase SalonCasa

"Todo tiene que cuadrar"

Inténtalo y si tienes problemas vuelve a preguntar...

Saludos

momo

  • Principiante
  • **
  • Mensajes: 64
    • Ver Perfil
Re:ENTREGA:CU00642B constructor in class cannot be applied to given types
« Respuesta #2 en: 02 de Septiembre 2014, 03:27 »
 Hola Mario R. Rancel Ya modifique las clases "SalonCasa y CocinaCasa " lo que hice fue agregarle otro constructor con parámetros y si ahora funciona perfectamente el ejercicio. Muchas Gracias Amigo.




CLASE CocinaCasa
Código: [Seleccionar]

public class CocinaCasa
{
    private boolean esIndependiente;
    private int numeroDeFuego;
   
    public CocinaCasa()
    {
        esIndependiente=false;
        numeroDeFuego=0;
    }
    public CocinaCasa(boolean valorEsIndependiente, int valorNumeroDeFuego)
    {
        esIndependiente=valorEsIndependiente;
        numeroDeFuego=valorNumeroDeFuego;
   
    }
    public void setEsIndependiente(boolean valorEsIndependiente)
    {
        esIndependiente=valorEsIndependiente;
    }
    public void setNumeroDeFuego(int valorNumeroDeFuego)
    {
        numeroDeFuego=valorNumeroDeFuego;
   
    }
    public boolean getEsIndependiente(){return esIndependiente;}
    public int getNumeroDeFuego(){return numeroDeFuego;}

}



CLASE SalonCasa:
Código: [Seleccionar]
public class SalonCasa
{
    //Atributos
    private int numeroDeTelevisores;
    private String tipoSalon;
   
    public SalonCasa()//Constructor
    {
        numeroDeTelevisores=0;
        tipoSalon="";   
    }
    public SalonCasa(int valorNumeroDeTelevisores,String valorTipoSalon)
    {
        numeroDeTelevisores=valorNumeroDeTelevisores;
        tipoSalon=valorTipoSalon;
   
    }
    //Metodo Setter
    public void setNumeroDeTelevisores(int valorNumeroDeTelevisores)
    {
        numeroDeTelevisores=valorNumeroDeTelevisores;
   
    }
    public void setTipoSalon(String valorTipoSalon)
    {
        tipoSalon=valorTipoSalon;
   
    }//Fin Metodo Setter
   
    //Metodo Getter
    public int getNumeroDeTelevisores(){return numeroDeTelevisores;}
    public String getTipoSalon(){return tipoSalon;}
}//Fin class


CLASE Casa:
Código: [Seleccionar]
public class Casa
  {
      //ATRIBUTOS
      private double superficie;
      private String direccion;
      private SalonCasa salonCasa;
      private CocinaCasa cocina;
     
     
      public Casa()//CONSTRUCTOR
      {
          superficie=0.0;
          direccion="";
          salonCasa=new SalonCasa();
          cocina=new CocinaCasa();
       
      }
      public Casa(SalonCasa objetoSalon,CocinaCasa objetoCocina)//CONSTRUCTOR 2
     
      {
          salonCasa= new SalonCasa(objetoSalon.getNumeroDeTelevisores(),objetoSalon.getTipoSalon());
          cocina=new CocinaCasa(objetoCocina.getEsIndependiente(),objetoCocina.getNumeroDeFuego());
                       
      }
     
      //Metodos setter para superficie y direccion
      public void setSuperficie(double valorSuperficie)
      {
          superficie=valorSuperficie;
      }
      public void setDireccion(String valorDireccion)
      {
          direccion=valorDireccion;
      }
     
     
      //metodo getter para superficie y direccion
      public double getSuperficie(){return superficie;}
      public String getDireccion(){return direccion;}
     
    }


jaivcaba

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 42
    • Ver Perfil
Re:ENTREGA:CU00642B constructor in class cannot be applied to given types
« Respuesta #3 en: 23 de Octubre 2014, 07:21 »
A mi me salía el mismo error... he decidido hacer las dos opciones que propones para resolver el problema, una para cada clase. ¿seria así?
Gracias.



Aquí el código

Para Casa


Para Casa

Código: [Seleccionar]
/**
 * Write a description of class Casa here.
 * @author (jaivcaba)
 * @version (23/10/2014)
 */
public class Casa
{   
    // instance variables - replace the example below with your own
   
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocinaCasa;
   
    /*
    * Constructor for objects of class Casa
    */
   
    public Casa()
    {
        // initialise instance variables
        superficie = 0.0;
        direccion = " calle _ carrera _";
        salonCasa = new SalonCasa();
        cocinaCasa = new CocinaCasa();
    }
   
    public Casa(double superficie, String direccion , SalonCasa objetosalonCasa, CocinaCasa objetococinaCasa)
    {
     salonCasa = new SalonCasa (objetosalonCasa.getNumeroDeTelevisores(), objetosalonCasa.getTipoSalon ());
     cocinaCasa = objetococinaCasa;
    }
         
        public void setSuperficie (double valorSuperficie){
        superficie = valorSuperficie;
    }
        public void setDireccion (String valorDireccion){
        direccion = valorDireccion;
    }
        public void setSalonCasa (SalonCasa valorsalonCasa){
        this.salonCasa = valorsalonCasa;
    }
        public void setCocinaCasa (CocinaCasa valorcocinaCasa){
        this.cocinaCasa = valorcocinaCasa;
    }
   
    public double getSuperficie (){return superficie;}
    public String getDireccion () {return direccion;}
    public SalonCasa getsalonCasa () { return salonCasa;}
    public CocinaCasa getcocinacasa (){return cocinaCasa;}
   
}


Para CocinaCasa

Código: [Seleccionar]
/**
 * Write a description of class CocinaCasa here.
 *
 * @author (jaivacaba)
 * @version (19/10/14)
 */
public class CocinaCasa
{
    // instance variables - replace the example below with your own
    private boolean esIndependiente;
    private int numeroDeFuegos;

    /**
     * Constructor for objects of class CocinaCasa
     */
    public CocinaCasa()
    {
        // initialise instance variables
        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;}
}

Para SalonCasa

Código: [Seleccionar]
/**
 * Write a description of class SalonCasa here.
 *
 * @author (jaivcaba)
 * @version (19/10/14)
 */
public class SalonCasa
{
    // instance variables - replace the example below with your own
    private int numeroDeTelevisores;
    private String tipoSalon;

    /**
     * Constructor for objects of class SalonCasa
     */
    public SalonCasa(int setnumeroDeTelevisores, String setTipoSalon)
    {
    numeroDeTelevisores = setnumeroDeTelevisores;
    tipoSalon= setTipoSalon;
   }
   
     public SalonCasa()
    {
        // initialise instance variables
        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;}
}

   

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Hola jaivcaba, el código está bien resuelto.

En el constructor sin parámetros sería más aconsejable inicializar direccion = "" en lugar de direccion = " calle _ carrera _";

En los parámetros debes seguir el patrón camelCase, por ejemplo mejor objetoSalonCasa que objetosalonCasa. La diferencia es una simple letra mayúscula, pero así sigues el patrón.

En el constructor con parámetros esto está muy bien planteado: salonCasa = new SalonCasa (objetosalonCasa.getNumeroDeTelevisores(), objetosalonCasa.getTipoSalon ());

Cumplido el objetivo del ejercicio al 100%, ¡a seguir!

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