Autor Tema: Error reason: actual and formal argument lists differ in length Java CU00641B  (Leído 12099 veces)

dreamcatcher

  • Sin experiencia
  • *
  • Mensajes: 5
    • Ver Perfil
Estoy intentando compilar el ejercicio resuelto de la lección CU00641B del tutorial
 
Código: [Seleccionar]
/* Ejemplo - aprenderaprogramar.com */
//Ejemplo de clase que utiliza tipos definidos en otras clases (usa otras clases)
public class TaxiCond {

    private Taxi vehiculoTaxi;
    private Persona conductorTaxi;

    //Constructor
    public TaxiCond () {
        vehiculoTaxi = new Taxi (); //Creamos un objeto Taxi con el constructor general de Taxi
        conductorTaxi = new Persona (); //Creamos un objeto Persona con el constructor general de Persona
    }

    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


Cada vez que lo intento compliar, me resalta en rojo el "new Taxi ()" y dice :"constructor Taxi in class cannot be applied to given types. Required: java.lang.String,java.lang.String,int; found no arguments; reason: acutal and formal argument lists differ in length"
¿Alguien sabe qué le pasa y cómo puedo arreglarlo?
Gracias
« Última modificación: 05 de Agosto 2015, 11:17 por Alex Rodríguez »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Ejercicio CU00641B del curso Java, relación de uso entre clases Java
« Respuesta #1 en: 04 de Agosto 2015, 18:44 »
Hola dreamcatcher,

Creo que estás tratando de crear un objeto de tipo Taxi invocando un constructor que no existe.

para salir de dudas pega el código de la clase Taxi y de la clase Persona.

saludos,


dreamcatcher

  • Sin experiencia
  • *
  • Mensajes: 5
    • Ver Perfil
Este es el código de la clase Taxi:

Código: [Seleccionar]
/* Ejemplo - aprenderaprogramar.com */
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: cuando se cree un objeto taxi se ejecutará el código que incluyamos en el constructor
    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 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

y este es el código de la clase persona:

Código: [Seleccionar]
/*ejemplo de aprenderaprogramar.es*/
public class Persona {
    private String nombre;
    private int edad;
    //Constructor
    public Persona () {
        nombre = "";
        edad = 0;
    }
    public void setNombre (String valorNombre) {
        nombre = valorNombre;
    }
    public void setEdad (int valorEdad) {
        edad = valorEdad;
        switch (edad) {
            case 0:
            System.out.println ("Acaba de nacer hace poco. No ha cumplido el año");
            break;
            case 18: System.out.println ("Está justo en la mayoría de edad"); break;
            case 65: System.out.println ("Está en la edad de jubilación"); break;
            default: System.out.println ("La edad no es crítica"); break;
        }
    }
    public String getNombre () { return nombre; }
    public int getEdad () { return edad; }
    public void dimeSiEdadEsCritica() {
        switch (edad) {
            case 0:
            System.out.println ("Acaba de nacer hace poco. No ha cumplido el año");
            break;
            case 18: System.out.println ("Está justo en la mayoría de edad"); break;
            case 65: System.out.println ("Está en la edad de jubilación"); break;
            default: System.out.println ("La edad no es crítica"); break;
        }
    }
}
   

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
hola otra vez,

cuando creas el obeto taxi aquí:

vehiculoTaxi = new Taxi ();

no le pasas ningún dato, y el constructor que hay en la clase Taxi..

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

espera que le mandes tres datos, por eso te dá el error.

La solución sería crear un constructor que no pida ningún dato o que cuando creas el objeto lo hagas asingandole los valores que precisa el construrtor que tienes en la clase Taxi.

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