Autor Tema: Constructor in class cannot be applied to given types; required: Java CU00641B  (Leído 6705 veces)

Francisco

  • Sin experiencia
  • *
  • Mensajes: 12
    • Ver Perfil
Hola otra vez.

He solucionado la duda enviada en el otro mensaje de hace una hora(era porque no tenía las tres clases en el mismo proyecto). Ahora tengo otra parecida. No compila.
El mensaje es:

"Constructor taxi in class Taxi cannot be applied to given types; required: java.lang.String,java.lang.String,int.
The operator that you use here cannot be used for the type of value that you are using it for. You are either using the wrong type here, or the wrong operator."

"Constructor de taxi en la clase de taxi no se puede aplicar a tipos dados; requerido: java.lang.String, java.lang.String, int.
El operador que utilice aquí no se puede utilizar para el tipo de valor que está utilizando para. Estás ya sea utilizando el tipo equivocado aquí, o el operador equivocado."

Qué pueden decirme? el fallo lo da en "new Taxi" del constructor .

clase TaxiCond

Código: [Seleccionar]
public class TaxiCond{
    //Atributo definidos en otras clases como objetos
    private Taxi vehiculoTaxi; //Taxi es un tipo definido en otra clase, ahora es un tipo de dato referenciado.
    private Persona conductorPersona; //Ocurre lo mismo que con el tipo Taxi.
    //Constructor:
    public TaxiCond(){
        vehiculoTaxi = new Taxi(); //Creamos un objeto Taxi con el constructor general de Taxi.
        conductorPersona = new Persona(); //Creamos un objeto Persona con el constructor general de Persona.
    }
   
    public void setMatricula(String valorMatricula){
        vehiculoTaxi.setMatricula(valorMatricula);
    }
   
    //Método que devuelve información sobre el objeto TaxiCond.
    public String getDatosTaxiCond(){
        String matricula = vehiculoTaxi.getMatricul();
        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){cadenTipoMotor = "Diesel";}
       
        String datosTaxiCond = "El objeto Taxi presenta estos datos: Matricula: " +matricula+ " Distrito: " +distrito+ " Tipo de motor: " +cadenaTipoMotor;
       
        System.out.println(datosTaxiCond);
        return datosTaxiCond;
    }
   
   
}

clase Persona

Código: [Seleccionar]
public class Persona{
    //Caracteristicas, atributos o campos de todos los objetos Persona creados en esta clase.
    private String nombre;
    private int edad;
    //Constructor1,con parámetros, define el codigo que será ejecutado.
    public Persona(String nombrePersona){
        nombre = nombrePersona;
        edad = 0;
    }
    //Constructor; sin parámetros, define el código que se ejecutará.
    public Persona(){
        nombre = "";
        edad = 0;
    }
    //Método para obtener el nombre.
    public String getNombre(){
        return nombre;
    }
}

clase Taxi

Código: [Seleccionar]
public class Taxi{
    //Caracteristicas para cada objeto Taxi.
    private String ciudad;
    private String matricula; //Matrícula de cada objeto Taxi.
    private String distrito;
    private int tipoMotor;
    //Constructor: Solo se ejecuta el código definido en el constructor.
    public Taxi(String valorMatricula,String valorDistrito,int valorTipoMotor){
        ciudad = "México D.F.";
        matricula = valorMatricula;
        distrito = valorDistrito;
        tipoMotor = valorTipoMotor;
    }
    //Serie de métodos para obtener los valores de los métodos.
    public String getMatricula(){
        return matricula;
    }
    public String getDistrito(){
        return distrito;
    }
    public int getTipoMotor(){
        return tipoMotor;
    }
   
   
}
« Última modificación: 30 de Julio 2015, 18:19 por Alex Rodríguez »

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Re:CLASES QUE UTILIZAN OBJETOS COMO ATRIBUTOS. Lámina 42. (CU00641B)
« Respuesta #1 en: 30 de Julio 2015, 10:46 »
Ese error te indica que le estás pasando al constructor de Taxi, unos tipos que no corresponden con los que espera recibir, asegurate bien que pasas String y int. porque ahi esta el error.

"Constructor taxi in class Taxi cannot be applied to given types; required: java.lang.String,java.lang.String,int.
The operator that you use here cannot be used for the type of value that you are using it for. You are either using the wrong type here, or the wrong operator."

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:CLASES QUE UTILIZAN OBJETOS COMO ATRIBUTOS. Lámina 42. (CU00641B)
« Respuesta #2 en: 30 de Julio 2015, 18:18 »
Hola Francisco ten en cuenta que estás intentando ejecutar vehiculoTaxi = new Taxi();

Sin embargo el constructor es este:

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

Tienes que hacer corresponder la sentencia new con algún constructor disponible, en este caso tendrías que usar por ejemplo vehiculoTaxi = new Taxi ("0455-BC", "Valdezarza", 3);

O bien crear otro constructor que no requiera parámetros.

Saludos

david01

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Yo en mi caso necesito que de como dato un año, pero nada de nada.

package es.david.unidad2.ejercicio.estanteria.multimedia.clases.base;
//Ejercicio Nº3
/**
 *@author david
 */
/**
 * Mediante extends, heredamos de la clase Multimedia
 */
public class Disco extends Multimedia {
    /**
     * Atributos
     */
    private String genero;
    private String año;
    /**
     * Constructor 
     * @param titulo
     * @param autor
     * @param año
     * @param genero
     */
    public Disco(String titulo, String autor, String año,  String genero) {
        super(titulo, autor, año);
         this.genero = genero;
         this.año = año;
    }
    /**
     * Métodos de acceso
     *  Método String to String
     *  Método get
     * @return
     */
    @Override
    public String toString() {
        return super.toString() + "\nGenero: " + getGenero();
    }
    /**
     * Método get
     * @return
     */   
    public String getGenero() {
        return genero;
    }
    /**
     * @param genero
     */
    public void setGenero(String genero) {
        this.genero = genero;
    }
    /**
     *
     * @param getAño
     * @return
     */
    public String getAño(String getAño) {
        return año;
    }
    public void setAño(String año) {
        this.año = año;
    }
   
   
}

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Hola david01 para para crear tu pregunta duda o consulta tenes que crear un nuevo tema para que los administradores no te bloqueen. Tenes que leer este link para saber la regla del foro.
https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0
« Última modificación: 26 de Octubre 2016, 02:11 por DRANXZ88 »

 

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