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
-
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
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
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
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
-
Buenas, el mismo error se comenta en https://www.aprenderaprogramar.com/foros/index.php?topic=3001.0
Salu2
-
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:
/* 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:
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:
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.
-
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.
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
//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.
-
Oye gracias por tu respuesta.. Asi era... !
-
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:
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
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
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;}
}
-
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.