Autor Tema: constructor in class cannot be applied to given types; required no arg CU00641B  (Leído 10005 veces)

Edwin

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Hola, me encuentro desarrollando el ejemplo expuesto en la entrega numero 42 o CU00642B  del curso java desde 0 , y resulta que en el momento de intentar relacionar las clases en este caso TaxiCon con Taxi y Persona, la primera siendo quien utiliza a las dos clases seguidas, en el momento de compilar me genera un error el cual me dice lo siguiente:

"constructor Persona in class Persona cannot be applied to given types;
required: no arguments; found:java.lang.String; reason:actual and formal arguments lists differ in length"
 por favor si alguien me puede ayudar y me puede dar solucion , quiero seguir con el curso... pero es muy dificil pasarse una leccion tan importante si quiero seguir con el.

Anexo los codigos de las clases TaxiCond, Taxi y Persona respectivamente. de ante mano Gracias por su ayuda! Edwin
Codigo TaxiCond
Código: [Seleccionar]
public class TaxiCond {

    private Taxi vehiculoTaxi;
    private Persona conductorTaxi;

     //Constructor

    public TaxiCond (Taxi objetoTaxi, Persona objetoPersona) {

         //Creamos un objeto Taxi con los mismos datos del Taxi recibido como parámetro

         vehiculoTaxi = new Taxi (objetoTaxi.getMatricula(), objetoTaxi.getDistrito(), objetoTaxi.getTipoMotor() );

         //Creamos un objeto Persona con los mismos datos de la Persona recibidos como parámetro

                    conductorTaxi = new Persona (objetoPersona.getNombre() );     
    }
   
    public void setMatricula (String valorMatricula) {
        vehiculoTaxi.setMatricula(valorMatricula);
    }

    //Método que devuelve la información sobre el objeto TaxiCond
    public String getDatosTaxiCond () {
        String matricula = vehiculoTaxi.getMatricula();
        String distrito = vehiculoTaxi.getDistrito();
        int tipoMotor = vehiculoTaxi.getTipoMotor();
        String cadenaTipoMotor = "";

        if (tipoMotor ==0) { cadenaTipoMotor = "Desconocido"; }
        else if (tipoMotor == 1) { cadenaTipoMotor = "Gasolina"; }
        else if (tipoMotor == 2) { cadenaTipoMotor = "Diesel"; }

        String datosTaxiCond = "El objeto TaxiCond presenta estos datos. Matrícula: " + matricula +
            " Distrito: " + distrito + " Tipo de motor: " + cadenaTipoMotor;

        System.out.println (datosTaxiCond);
        return datosTaxiCond;
    } //Cierre del método

} //Cierre de la clase



Codigo de la clase Persona

Código: [Seleccionar]

public class Persona{
    private String nombre;
    private String apellidos;
    private int edad;
    private boolean casado;
    private String numdoc;

    public Persona(){
        nombre= "";
        apellidos="";
        edad=0;
        casado=true;
    }

    public void setNombre(String valNombre){
        nombre=valNombre;
    }

    public String getNombre(){return nombre;}

    public void setApellidos(String valApellidos){
        apellidos=valApellidos;
    }

    public String getApellidos(){return apellidos;}

    public void setEdad(int valEdad){
        edad=valEdad;
    }

    public int getEdad(){return edad;}

    public void setCasado(boolean valCasado){
        casado=valCasado;
    }

    public boolean getCasado(){return casado;}

    public void setNumDoc(String valNumDoc){
        numdoc=valNumDoc;
    }

    public String getNumDoc(){return numdoc;}

}

codigo de la clase taxi

Código: [Seleccionar]
public class Taxi { //El nombre de la clase

 

    private String ciudad; //Ciudad de cada objeto taxi

    private String matricula; //Matrícula de cada objeto taxi

    private String distrito; //Distrito asignado a cada objeto taxi

    private int tipoMotor; //tipo de motor asignado a cada objeto taxi. 0 = desconocido, 1 = gasolina, 2 = diesel

 

    //Constructor 1: constructor sin parámetros

    public Taxi () {

        ciudad = "México D.F.";       

        matricula = "";

        distrito = "Desconocido";

        tipoMotor = 0;

    } //Cierre del constructor

 

    //Constructor 2: constructor con parámetros

    public Taxi (String valorMatricula, String valorDistrito, int valorTipoMotor) {

    ciudad = "México D.F.";

    matricula = valorMatricula;

    distrito = valorDistrito;

    tipoMotor = valorTipoMotor;

    } //Cierre del constructor

 

    //Método para establecer la matrícula de un taxi

    public void setMatricula (String valorMatricula) {

        matricula = valorMatricula; //La matrícula del objeto taxi adopta el valor que contenga valorMatricula

    } //Cierre del método

 

    //Método para establecer el distrito de un taxi

    public void setDistrito (String valorDistrito) {

        distrito = "Distrito " + valorDistrito; //El distrito del objeto taxi adopta el valor indicado

    } //Cierre del método

   

    //Método para establecer el tipo de motor de un taxi

    public void setTipoMotor (int valorTipoMotor) {

        tipoMotor = valorTipoMotor; //El tipoMotor del objeto taxi adopta el valor que contenga valorTipoMotor

    } //Cierre del método

   

    //Método para obtener la matrícula del objeto taxi

    public String getMatricula () { return matricula; } //Cierre del método

   

    //Método para obtener el distrito del objeto taxi

    public String getDistrito () { return distrito; } //Cierre del método

   

    //Método para obtener el tipo de motor del objeto taxi

    public int getTipoMotor () { return tipoMotor; } //Cierre del método

 

} //Cierre de la clase

« Última modificación: 24 de Abril 2016, 16:46 por César Krall »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:CLASES QUE UTILIZAN OBJETOS. RELACIÓN DE USO ENTRE CLASES. CU00641B
« Respuesta #1 en: 22 de Abril 2016, 17:13 »
Buenas, el mismo error se comenta en https://www.aprenderaprogramar.com/foros/index.php?topic=3001.0

Salu2

Edwin

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Luego de leer el foro en el cual informa acerca del error generado al compilar las tres clases, intente de muchas maneras verificar y corregir el error según la información dada en el foro, pero no he podido solucionarlo, la única forma en que me compila es como dice una respuesta del foro es dejándolo sin parámetros pero no se trata de eso, se trata de saber cual es el error para una próxima vez que me suceda,  saber que provoca el error y poder resolverlo ... De nuevo por favor les pido me que me ayuden de nuevo, no quiero seguir el tutorial quedando con dudas sin resolver. los códigos de las clases son

clase taxi:

Código: [Seleccionar]

/* Ejemplo - aprenderaprogramar.com */

//Esta clase representa un taxi.

public class Taxi { //El nombre de la clase

 

    private String ciudad; //Ciudad de cada objeto taxi

    private String matricula; //Matrícula de cada objeto taxi

    private String distrito; //Distrito asignado a cada objeto taxi

    private int tipoMotor; //tipo de motor asignado a cada objeto taxi. 0 = desconocido, 1 = gasolina, 2 = diesel

 

    //Constructor 1: constructor sin parámetros

    public Taxi () {

        ciudad = "México D.F.";       

        matricula = "";

        distrito = "Desconocido";

        tipoMotor = 0;

    } //Cierre del constructor

 

    //Constructor 2: constructor con parámetros

    public Taxi (String valorMatricula, String valorDistrito, int valorTipoMotor) {

    ciudad = "México D.F.";

    matricula = valorMatricula;

    distrito = valorDistrito;

    tipoMotor = valorTipoMotor;

    } //Cierre del constructor

 

    //Método para establecer la matrícula de un taxi

    public void setMatricula (String valorMatricula) {

        matricula = valorMatricula; //La matrícula del objeto taxi adopta el valor que contenga valorMatricula

    } //Cierre del método

 

    //Método para establecer el distrito de un taxi

    public void setDistrito (String valorDistrito) {

        distrito = "Distrito " + valorDistrito; //El distrito del objeto taxi adopta el valor indicado

    } //Cierre del método

   

    //Método para establecer el tipo de motor de un taxi

    public void setTipoMotor (int valorTipoMotor) {

        tipoMotor = valorTipoMotor; //El tipoMotor del objeto taxi adopta el valor que contenga valorTipoMotor

    } //Cierre del método

   

    //Método para obtener la matrícula del objeto taxi

    public String getMatricula () { return matricula; } //Cierre del método

   

    //Método para obtener el distrito del objeto taxi

    public String getDistrito () { return distrito; } //Cierre del método

   

    //Método para obtener el tipo de motor del objeto taxi

    public int getTipoMotor () { return tipoMotor; } //Cierre del método

 

} //Cierre de la clase

Clase Persona:

Código: [Seleccionar]
public class Persona{
    private String nombre;
    private String apellidos;
    private int edad;
    private boolean casado;
    private String numdoc;

    public Persona(){
        nombre= "";
        apellidos="";
        edad=0;
        casado=true;
    }

    public void setNombre(String valNombre){
        nombre=valNombre;
    }

    public String getNombre(){return nombre;}

    public void setApellidos(String valApellidos){
        apellidos=valApellidos;
    }

    public String getApellidos(){return apellidos;}

    public void setEdad(int valEdad){
        edad=valEdad;
    }

    public int getEdad(){return edad;}

    public void setCasado(boolean valCasado){
        casado=valCasado;
    }

    public boolean getCasado(){return casado;}

    public void setNumDoc(String valNumDoc){
        numdoc=valNumDoc;
    }

    public String getNumDoc(){return numdoc;}

}

Clase TaxiCond:
Código: [Seleccionar]
public class TaxiCond {

    private Taxi vehiculoTaxi;
    private Persona conductorTaxi;

     //Constructor

    public TaxiCond (Taxi objetoTaxi, Persona objetoPersona) {

         //Creamos un objeto Taxi con los mismos datos del Taxi recibido como parámetro

         vehiculoTaxi = new Taxi (objetoTaxi.getMatricula(), objetoTaxi.getDistrito(), objetoTaxi.getTipoMotor() );

         //Creamos un objeto Persona con los mismos datos de la Persona recibidos como parámetro

         conductorTaxi = new Persona (objetoPersona.getNombre());           
    }
   
    public void setMatricula (String valorMatricula) {
        vehiculoTaxi.setMatricula(valorMatricula);
    }

    //Método que devuelve la información sobre el objeto TaxiCond
    public String getDatosTaxiCond () {
        String matricula = vehiculoTaxi.getMatricula();
        String distrito = vehiculoTaxi.getDistrito();
        int tipoMotor = vehiculoTaxi.getTipoMotor();
        String cadenaTipoMotor = "";

        if (tipoMotor ==0) { cadenaTipoMotor = "Desconocido"; }
        else if (tipoMotor == 1) { cadenaTipoMotor = "Gasolina"; }
        else if (tipoMotor == 2) { cadenaTipoMotor = "Diesel"; }

        String datosTaxiCond = "El objeto TaxiCond presenta estos datos. Matrícula: " + matricula +
            " Distrito: " + distrito + " Tipo de motor: " + cadenaTipoMotor;

        System.out.println (datosTaxiCond);
        return datosTaxiCond;
    } //Cierre del método

} //Cierre de la clase

Por favor les agradeceria mucho que me pudieran ayudar.
« Última modificación: 26 de Abril 2016, 17:11 por pedro,, »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Hola Edwin.

El hecho de dejarlo sin parámetros es porque en la clase Persona el único constructor  declarado que existe no precisa ningún parámetro.

Código: [Seleccionar]
public Persona(){
        nombre= "";
        apellidos="";
        edad=0;
        casado=true;
    }

Si quieres crear un objeto persona usando parámetros tendrás que crear en la clase persona un constructor que precise esos parámetros.
Sería algo parecido al constructor 2 de la clase Taxi

Código: [Seleccionar]
//Constructor 2: constructor con parámetros

    public Taxi (String valorMatricula, String valorDistrito, int valorTipoMotor) {

    ciudad = "México D.F.";

    matricula = valorMatricula;

    distrito = valorDistrito;

    tipoMotor = valorTipoMotor;

    } //Cierre del constructor

Saludos.
« Última modificación: 26 de Abril 2016, 17:09 por pedro,, »

Edwin

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Oye gracias por tu respuesta.. Asi era... !

Edwin

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Gracias por tu ayuda perdro, esta vez quiero pedirte otro favor con respecto al mismo ejercicio. ya tengo las tres clases ya compilando y todo parece estar bn, pero cuando quiero abstraer la informacion de los objetos de CocinaCasa y SalonCasa que son las clases que utiliza Casa y no me deja verla! hay te dejo el codigo para por si me quieres ayudar de nuevo,  gracias!

Clase Casa:

Código: [Seleccionar]

public class Casa{

    private double superficie;
    private String direccion;
    private SalonCasa salaCasa;
    private CocinaCasa cocina;

    public Casa(SalonCasa objetoSalonCasa, CocinaCasa objetoCocinaCasa){
        superficie = 0;
        direccion = "";
        salaCasa= new SalonCasa();
        cocina= new CocinaCasa();
    }

    public void setSuperficie(double valSuperficie) {
        superficie = valSuperficie;
    }

    public void setDireccion(String valDireccion) {
        direccion=valDireccion ;
    }

    public void setSalonCasa(SalonCasa valSalonCasa){
        salaCasa = valSalonCasa;
    }

    public void setCocinaCasa(CocinaCasa valCocinaCasa){
        cocina = valCocinaCasa;
    }

    public String getDireccion() {
        return direccion;
    }   

    public double getSuperfice() {
        return superficie;
    }   

    public SalonCasa getSalonCasa(){
        return salaCasa;
    }
   
    public CocinaCasa getCocinaCasa(){
        return cocina;
    }
}


Clase CocinaCasa

Código: [Seleccionar]
public class CocinaCasa{
   
    private boolean esIndependiente;
    private int numeroDeFuegos;
   
    public CocinaCasa(){
        esIndependiente = false;
        numeroDeFuegos = 0;
    }
   
    public void setEsIndependiente(boolean valEsIndependiente){
        esIndependiente = valEsIndependiente;
    }
   
    public boolean getEsIndependiente(){return esIndependiente;}
   
    public void setNumeroDeFuegos(int valNumeroDeFuegos){
        numeroDeFuegos= valNumeroDeFuegos;
    }
   
    public int getNumeroDeFuegos(){return numeroDeFuegos;}

}
   
   


Clase SalonCasa

Código: [Seleccionar]

public class SalonCasa{

    private int numeroDeTelevisores;
    private String tipoSalon;

    //constructor

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

    public void setNumeroDeTelevisores(int valNumeroDeTelevisores){
        numeroDeTelevisores = valNumeroDeTelevisores;
    }
   
    public int getNumeroDeTelevisores(){return numeroDeTelevisores;}

    public void setTipoSalon(String valTipoSalon){
        tipoSalon = valTipoSalon;
    }

    public String getTipoSalon(){return tipoSalon;}

}

         

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Hola Edwin.

Tu código está bien planteado y hace lo pedía el enunciado del ejercicio.

En cuanto a tu duda, no entiendo exactamente lo que preguntas.
¿Lo que quieres es crear el objeto con BlueJ y luego acceder a la información de dicho objeto?

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