Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: fedegaray en 28 de Marzo 2015, 23:54
-
Hola! Me estoy enfrentando a un límite de mi comprensión, y cuento con que alguien más experto e inteligente me ayude a resolverlo.
Estoy siguiendo la lección CU00642B (no el ejercicio final, sino la explicación del cuerpo de la lección) que pide trabajar con las clases Taxi y Persona, a las que hará referencia la nueva clase TaxiCond.
El problema que estoy teniendo, y juro que he seguido todo paso a paso, es que luego de compilar sin problemas las clases Taxi y Persona, al compilar la clase TaxiCond me tira el siguiente mensaje de error:
No suitable constructor found for Persona(java.lang.String)
Constructor Persona.Persona is not applicable()
Reviso, reviso y reviso y no le veo la explicación. Me rindo y espero que alguien más apto que yo le vea la solución.
Aquí les copio las tres clases que intervienen...
CLASE 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: cuando se cree un objeto taxi se ejecutará el código que incluyamos en el constructor
public Taxi ()
{
ciudad = "México D.F.";
matricula = "";
distrito = "Desconocido";
tipoMotor = 0;
} //Cierre del constructor … el código continúa …
public Taxi (String valorMatricula, String valorDistrito, int valorTipoMotor) {
ciudad = "México D.F.";
matricula = valorMatricula;
distrito = valorDistrito;
tipoMotor = valorTipoMotor;
}
//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
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
public class Persona
{
private String nombre;
private String apellidos;
private int edad;
private boolean casado;
private String numeroDocumentoIdentidad;
public Persona()
{
nombre = "";
apellidos = "";
edad = 0;
casado = false;
numeroDocumentoIdentidad = "";
}
public Persona (String valorNombre, String valorApellidos, int valorEdad, boolean valorCasado, String valorNumeroDocumentoIdentidad)
{
nombre = valorNombre;
apellidos = valorApellidos;
edad = valorEdad;
casado = valorCasado;
numeroDocumentoIdentidad = valorNumeroDocumentoIdentidad;
}
public void setNombre(String valorNombre) {nombre = valorNombre;}
public void setApellidos(String valorApellidos) {apellidos = valorApellidos;}
public void setEdad(int valorEdad) {edad = valorEdad;}
public void setCasado(boolean valorCasado) {casado = valorCasado;}
public void setNumeroDocumentoIdentidad(String valorNumeroDocumentoIdentidad) {numeroDocumentoIdentidad = valorNumeroDocumentoIdentidad;}
public String getNombre() {return nombre;}
public String getApellidos() {return apellidos;}
public int getEdad() {return edad;}
public boolean getCasado() {return casado;}
public String getNumeroDocumentoIdentidad() {return numeroDocumentoIdentidad;}
}
CLASE TAXICOND (Esta es la que no se compila ni a patadas)
public class TaxiCond {
private Taxi vehiculoTaxi;
private Persona conductorTaxi;
public TaxiCond (Taxi objetoTaxi, Persona objetoPersona) {
vehiculoTaxi = new Taxi (objetoTaxi.getMatricula(), objetoTaxi.getDistrito(), objetoTaxi.getTipoMotor());
conductorTaxi = new Persona (objetoPersona.getNombre());
}
public void setMatricula (String valorMatricula) { vehiculoTaxi.setMatricula(valorMatricula);}
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
}
Muchas gracias por la atención y la intención de ayudar.
-
Hola: creo yo que el problema que tienes es: en la clase persona tu constructor que recibe parametros recibe 5 parametros y en taxicond le estas enviando solamente 1. por lo que creo que donde nos decia que retomaramos la clase persona de ejemplos anteriores se referia a este codigo:
//Ejemplo de clase con dos constructores y un método
public class Persona {
private String nombre;
private int edad;
public Persona (String nombrePersona) { //CONSTRUCTOR 1
nombre = nombrePersona;
edad = 0; }
public Persona () { //CONSTRUCTOR2
nombre = "";
edad = 0; }
public String getNombre () { return nombre; } //Cierre del método
} //Cierre de la clase
así que cambia tu clase persona por este que te acabo de pasar y mira si yá.
-
Era eso!!! Ahora compila bien!! muchas gracias, que bueno contar con ayuda!
Te debo una! gracias arcanFAC!!!!!!!! ;D ;D ;D ;D ;D ;D ;D ;D ;D