Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Edwin en 22 de Abril 2016, 05:35

Título: constructor in class cannot be applied to given types; required no arg CU00641B
Publicado por: Edwin en 22 de Abril 2016, 05:35
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

Título: Re:CLASES QUE UTILIZAN OBJETOS. RELACIÓN DE USO ENTRE CLASES. CU00641B
Publicado por: Ogramar 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
Título: Re:constructor in class cannot be applied to given types; required no arg CU00641B
Publicado por: Edwin en 26 de Abril 2016, 15:32
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.
Título: Re:constructor in class cannot be applied to given types; required no arg CU00641B
Publicado por: pedro,, en 26 de Abril 2016, 17:05
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.
Título: Re:constructor in class cannot be applied to given types; required no arg CU00641B
Publicado por: Edwin en 26 de Abril 2016, 23:16
Oye gracias por tu respuesta.. Asi era... !
Título: Re:constructor in class cannot be applied to given types; required no arg CU00641B
Publicado por: Edwin en 29 de Abril 2016, 17:15
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;}

}

         
Título: Re:constructor in class cannot be applied to given types; required no arg CU00641B
Publicado por: pedro,, en 29 de Abril 2016, 23:30
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.