Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Libélula

Páginas: [1]
1
En primer lugar, gracias a Álex Rodríguez por aclararme la duda anterior.

Ahora me surge otra, con el ejercicio de referencia. El caso es que, efectivamente, en respuesta a la pregunta e), el método toString() que se aplica en la ejecución es el de la subclase, porque se corresponde con el tipo dinámico Taxi.

Sin embargo, yo he decidido que el constructor de Taxi tenga 4 parámetros, los dos de la superclase Vehículo referenciados con super (matrícula y número ruedas) y otros dos correspondientes a los atributos específicos de su clase (nombre conductor y número de plazas).
En la clase test, cuando creo un objeto de la clase Vehiculo instanciado como Taxi (o incluso un objeto de la clase Taxi directamente), e invoco al constructor de Taxi, meto lógicamente los 4 parámetros de su constructor, pero al ejecutar, los valores aparecen con 0 en tipo int y con null en String. En un principio he pensado que era por el hecho de que un objeto de tipo estático Vehiculo no podía contener a un objeto instanciado como Taxi en ejecución, pero si asigno el tipo estático Taxi me pasa lo mismo. ¿Por qué?

Adjunto mi código por si es de ayuda:

Código: [Seleccionar]
public class Vehiculo{
    private String matricula;
    private int numRuedas;
   
    public Vehiculo(String pMatricula, int pNumRuedas){
        matricula = pMatricula;
        numRuedas = pNumRuedas;
    }
   
    public void setMatricula(String pMatricula){
        matricula = pMatricula;}
    public void setNumRuedas(int pNumRuedas){
        numRuedas = pNumRuedas;}
    public String getMatricula(){
        return matricula;}
    public int getNumRuedas(){
        return numRuedas;}
    public String toString(){
        return ("El vehículo tiene la matrícula " + matricula + " y tiene " + numRuedas + " ruedas");}
}       

Código: [Seleccionar]
public class Taxi extends Vehiculo{
    private String matricula;
    private int numRuedas;
    private String nombreConductor;
    private int numPlazas;
   
    public Taxi(String matricula, int numRuedas, String pNombreConductor, int pNumPlazas){
        super(matricula, numRuedas);
        pNombreConductor = nombreConductor;
        pNumPlazas = numPlazas;
    }   
    public void setMatricula(String pMatricula){
        matricula = pMatricula;}
    public void setNumRuedas(int pNumRuedas){
        numRuedas = pNumRuedas;}
    public void setNombreConductor(String pNombreConductor){
        nombreConductor = pNombreConductor;}
    public void setNumPlazas(int pNumPlazas){
        numPlazas = pNumPlazas;}
    public String getMatricula(){
        return matricula;}
    public int getNumRuedas(){
        return numRuedas;}
    public String getNombreConductor(){
        return nombreConductor;}
    public int getNumPlazas(){
        return numPlazas;}
    public String toString(){
        return ("El taxi tiene la matrícula " + matricula + ", tiene " + numRuedas + " ruedas, su conductor se llama " + nombreConductor + ", y tiene " + numPlazas + " plazas.");}
}

Código: [Seleccionar]
public class TestInstanciaTaxi{
    public static void main (String[] args){
       Taxi miVehiculo = new Taxi("9999ZZZ", 4, "Pedro Pérez Pérez", 5);     
       System.out.println(miVehiculo.toString());
    }
}

2
Hola, soy yo otra vez. Ahora tengo otro problema. He modificado un poco el código para hacerlo más presentable, y todo va bien, excepto que siempre dice que la palabra no empieza con "a". Claramente el error está en el segundo if, pues no reconoce la condición de éste y se escriba la frase que se escriba siempre se cumple la condición del else.
Se supone que el método substring() devuelve un objeto String, así que yo pensaba que la condición  if (entradaTeclado.substring(0,1) == "a") sería correcta, pero parece que no es así. ¿Alguien me ayuda? Este es el código:
Código: [Seleccionar]
mport java.util.Scanner;

public class TestProgramaII{
   
   public static void main (String[] args){
       
        System.out.println("Introduce la cadena de caracteres: ");
        String entradaTeclado = "";
        Scanner entradaEscaner = new Scanner(System.in);
        entradaTeclado = entradaEscaner.nextLine();
               
        if (entradaTeclado.length() < 5) {System.out.print("\"La cadena introducida tiene menos de 5 caracteres");}
        else if (entradaTeclado.length() > 15) {System.out.print("\"La cadena introducida tiene más de 15 caracteres");}
        else System.out.print("\"La cadena introducida tiene entre 5 y 15 caracteres");
       
        if (entradaTeclado.substring(0,1) == "a") {System.out.println(" y comienza por a\"");}
        else {System.out.println(" y no comienza por a\"");}
   }
}

3
Hola, he realizado el ejercicio de la citada entrega, en el que se pide una clase con método main que pide entrada por el teclado y muestra mensaje utilizando condicionales y métodos length() y substring() de la clase String.

El caso es que el código compila, pero a la hora de ejecutar el método main la JVM se queda pensando y pensando... hasta que me canso de esperar y la reseteo, así que puede que algo de lo que he hecho esté mal.

A ver si alguien me puede decir dónde está el fallo. Este es el código:

Código: [Seleccionar]
import java.util.Scanner;

public class TestProgramaII{
   
    public static void main (String[] args){
       
        String entradaTeclado = "";
        Scanner entradaEscaner = new Scanner(System.in);
        entradaTeclado = entradaEscaner.nextLine();
       
        if (entradaTeclado.length() < 5) {System.out.println("\"La cadena introducida tiene menos de 5 caracteres");}
        else if (entradaTeclado.length() > 15) {System.out.println("\"La cadena introducida tiene más de 15 caracteres");}
        else System.out.println("\"La cadena introducida tiene entre 5 y 15 caracteres");
       
        if (entradaTeclado.substring(0,1) == "a"){System.out.println(" y comienza por a\"");}
        else System.out.println(" y no comienza por a\"");
    }
}

Páginas: [1]

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