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 - edioswaldo

Páginas: [1]
1
Estimados, aqui mi respuesta al ejercicio CU00690B para su verificación.

Citar
Supongamos la superclase Vehiculo que representa a cualquier tipo de vehículo y la subclase Taxi que representa a un tipo de vehículo concreto.
a) ¿Un objeto de tipo estático declarado Taxi puede contener a un objeto Vehiculo en tiempo de ejecución?
b) ¿Un objeto de tipo estático declarado Vehiculo puede contener a un objeto Taxi en tiempo de ejecución?
c) Escribe el código de una clase Vehiculo con los atributos matricula (String) y numeroDeRuedas (int), constructor, métodos getters y setters y método toString() para mostrar la información de un vehículo.
d) Escribe el código de una clase Taxi que herede de vehículo y que además de los atributos de Vehiculo lleve un atributo adicional nombreDelConductor (String) y numeroDePlazas (int), constructor, métodos getters y setters y método toString() para mostrar la información de un Taxi.
e) Escribe el código de una clase test con el método main que cree un objeto cuyo tipo es Vehiculo, instanciado como Taxi. Establece valores para sus atributos y usa el método toString().
¿Qué método toString() resulta de aplicación, el propio de la clase Vehiculo o el propio de la clase Taxi?
¿Por qué?


 Respuestas

Citar
a) ¿Un objeto de tipo estático declarado Taxi puede contener a un objeto Vehiculo en tiempo de ejecución?

R. En teoría Si, pero en la práctica No me funcionó, me dió error  en ejecución ""vehiculo cannot be cast to taxi" revisen mas adelante mi código y sabran porque les dije.

Código: [Seleccionar]
Vehiculo carro2=new Vehiculo() ;
        Taxi taxi2= new Taxi("ABC-222",4,"Edi2",4);
        taxi2= (Taxi)carro2;

Citar
b) ¿Un objeto de tipo estático declarado Vehiculo puede contener a un objeto Taxi en tiempo de ejecución?

R. Si es posíble, al menos a mi si me funcionó en el ejercicio.

Clase Vehiculo
Código: [Seleccionar]
public class Vehiculo{
    private String matricula;
    private int numeroDeRuedas;
    public Vehiculo(){
        matricula="";
        numeroDeRuedas=0;
    }

    public Vehiculo(String matricula,int numeroDeRuedas){
        this.matricula=matricula;
        this.numeroDeRuedas=numeroDeRuedas;
    }
    public void setMatricula(String matricula){this.matricula=matricula;}
    public void setNumeroDeRuedas(int numeroDeRuedas){this.numeroDeRuedas=numeroDeRuedas;}
    public String getMatricula(){ return matricula;}
    public int getNumeroDeRuedas(){return numeroDeRuedas;}
    //método para mostrar informacion toString sobrecargado.
    public String toString(){
        return "La matricula del vehiculo es: "+getMatricula()+". El #deRuedas es: "+getNumeroDeRuedas()+ ". ";
    }//cierre del método
}//cierre de la clase


Clase Taxi

Código: [Seleccionar]
public class Taxi extends Vehiculo {
    //Atributos
    private String nombreDelConductor;
    private int numeroDePlazas;
    //Constructor general
    public Taxi(){
        super();
        nombreDelConductor="";
        numeroDePlazas=0;
    }
    //Constructor
    public Taxi(String matricula, int numeroDeRuedas, String nombreDelConductor,int numeroDePlazas){
        super(matricula,numeroDeRuedas);
        this.nombreDelConductor=nombreDelConductor;
        this.numeroDePlazas=numeroDePlazas;
    }
    //Métodos SETTERS
    public void setNombreDelConductor(String nombreDelConductor){this.nombreDelConductor=nombreDelConductor;}
    public void setNumeroDePlazas(int numeroDePlazas){this.numeroDePlazas=numeroDePlazas;}
    //Métodos GETTERS
    public String getNombreDelConductor(){return nombreDelConductor;}
    public int getNumeroDePlazas(){return numeroDePlazas;}
    //Método sobrecargado de la clase Padre Vehiculo, se lo sobrecarga.
    public String toString(){
        return super.toString()+ " El nombre del conductor es: "+getNombreDelConductor()+". El # de plazas es: "+getNumeroDePlazas()+". ";
    }//cierre del método

}//cierre de la clase


Clase Test

Código: [Seleccionar]
public class TestVehiculo{
    public static void main( String []args){
        System.out.print("\f ");
        Vehiculo carro1;//defino objeto tipo Vehiculo
        carro1=new Taxi("QWE-111",6,"Edi1",5);//instancio como Taxi
        System.out.println("Carro 1= "+carro1.toString() );
       
        // aplico CASTING pero no funciona, sale error de ejecución "vehiculo cannot be cast to taxi"
        /*
        Vehiculo carro2=new Vehiculo() ;
        Taxi taxi2= new Taxi("ABC-222",4,"Edi2",4);
        taxi2= (Taxi)carro2;     
        System.out.println("Carro 2= "+taxi2.toString());
        */
        Vehiculo carro3=new Vehiculo("ninguno",0) ;
        Taxi taxi3= new Taxi("RTY-333",8,"Edi3",8);
        carro3=taxi3;     
        System.out.println("Carro 3= "+carro3.toString() );

    }//cierre del main

}//cierre de la clase


Citar
¿Qué método toString() resulta de aplicación, el propio de la clase Vehiculo o el propio de la clase Taxi?
¿Por qué?

R. Revise ejecutando paso a paso poniendo algunos puntos de interrupciones, y en el ejercicio utilizo el método de la subclase.

Otra cosa cuando intente colocar en el método sobrecargado en la subclase Taxi de esta forma

 
Código: [Seleccionar]
public String toString(){
super();
        return toString()+ " El nombre del conductor es: "+getNombreDelConductor()+". El # de plazas es: "+getNumeroDePlazas()+". ";
    }


Ya que habia leido en el foro que al llamar un método sobrecargado que fue definido en la superclase con misma signatura, bastaba con usar solo super(); para invocar dicho método de la clase padre, pero No me funcionó me dió error de compilado "call to super must be first statement in constructor " por eso que debi usar para invocar al método "super.toString()", revisen mi código que esta en la clase Taxi para que comprendan, porque ya hice la misma consulta en otro post a alguien que le dió el mismo error pero sigue sin respuesta.

Gracias por revisar, saludos.

2
Buen dia, mi respuesta al ejercicio.

Citar
Busca información en la documentación oficial de Java sobre la interface Iterable. ¿Qué clases de las que conoces implementan esta interface? ¿Qué método han de tener disponible las clases que implementan esta interface? ¿Para qué sirve este método?

Respuestas:

-Conozco gracias a este curso que implementa esta interface la clase ArrayList.

-El método que ha de tener disponibe es iterator()

-iterator() retorna los elementos que estan en una iteracción. Se lo utiliza mucho para poder presentar los elementos de objetos tipo ArrayList cuando haciamos los ejercicios, pero debe servir para otros tipos de objetos.

Saludos cordiales.

3
Hola. Mi solución al ejercicio CU00675B, favor revisarlo, saludos estimados.

Citar
EJERCICIO
Crea un programa Java donde declares un array de enteros tipo int miArray1 cuyo contenido inicial sea {2, -4, 3, -7}. Muestra su contenido por pantalla. Copia el contenido de este array a un ArrayList denominado lista1 y muestra su contenido por pantalla. ¿Qué tipo de datos almacena el array? ¿Qué tipo de datos almacena el ArrayList?


¿Qué tipo de datos almacena el array?

El "array" almacena datos del tipo primitivo int.


¿Qué tipo de datos almacena el ArrayList?

El "ArrayList" almacena datos del tipo objeto Integer.(tipo envoltorio de int)


Ejercicio

Código: [Seleccionar]
import java.util.ArrayList;
public class TestEjercicioArrays
{
    public static void main(String []args){
        int [] miArray1={2,-4,3,-7};
        ArrayList<Integer> lista1=new ArrayList<Integer>();
        //Presento  miArray1
        System.out.print("\nArray [int]:\t");
        for (int i=0;i< miArray1.length;i++){
            System.out.print("\tmiArray1["+i+"]= "+miArray1[i]+";");
        }
        //Copio elementos de tipo primitivo int en objeto Array tipo objeto Integer
        for(int i=0;i<miArray1.length;i++){
            lista1.add(miArray1[i]);
        }
        //Muestro por pantalla contenido de lista1
        int i=0;
        System.out.print("\nArrayList<Integer>:");
        for(Integer auxLista1:lista1){//for each
            System.out.print("\tlista1  ("+i+")= "+ auxLista1+";");i++;
        }
    }//cierre del main
}//cierre de la clase

4
Buenas estimados  :). He seguido con el curso de Java, aunque no he subido los ejercicios para la revisión. Aqui esta el mio, espero esté bien.

Citar
Tema: static, final en Java (palabras clave). Variables de clase o campos estáticos y constantes.
 * Ejemplos (CU00673B)
 * EJERCICIO: Define una clase Java denominada Circulo que tenga como atributo de clase (estático) y constante numeroPi, siendo esta constante de tipo double y valor 3.1416. Además la clase tendrá el atributo radio (tipo double) que representa el radio del círculo, y los métodos para obtener y establecer los atributos. También debe disponer de un método para calcular el área del círculo (método tipo funcion areaCirculo que devuelve el área) y la longitud del círculo (método tipo función que devuelve la longitud). Busca información sobre las fórmulas necesarias para crear estos métodos en internet si no  las recuerdas. En una clase con el método main, declara el código que cree un objeto círculo, le pida al usuario el radio y le devuelva el área y la longitud del círculo.

¿Es posible crear un método en la clase Circulo para establecer el valor de numeroPi? ¿Por qué?

Respecto a la pregunta, es que No hay como establecer el valor numerico Pi porque ya lo definimos como una constante "static final" en la cabecera y si comprobamos al compilar nos da un error por este motivo.

Para el Ejercicio usé tres clases que a continuación publico.


Clase EntradaTeclado

Código: [Seleccionar]
//Clase para ingresar texto por teclado y usarlo en clase TestCirculo, etc.
import java.util.Scanner;
public class EntradaTeclado{//nombre de la clase
    //atributos
    private String texto;
    private Scanner captura;
    //constructor
    public EntradaTeclado(){
        texto="";
        captura=new Scanner(System.in);
    }
    //métodos

    public String ingresoTeclado(){
        texto=captura.nextLine();
        return texto;
    }
}//cierre de la clase


Clase Circulo

Código: [Seleccionar]
public class Circulo{//nombre de la clase
    //atributos
    private static final double PI=3.1416;//declaramos constante PI
    private double radio;
    //constructor
    public Circulo(){
    radio=0.0;
    }
    public Circulo(double radio){
        this.radio=radio;
        //PI=5.0;//No se puede establecer el valor Pde numeroPi porque es estatico
    }
    //Métodos
    //public void setPi(double numeroPi){PI=numeroPi;}//No se puede establecer el valor Pde numeroPi porque es estatico
    public void setRadio(double radio){this.radio=radio;}//establecer el valor del atributo radio
    public void mostrarPI(){System.out.println("el valor de PI es:"+PI);}//Solo para hacer pruebas (mostrar)
    public double getRadio(){return radio;}//obtener el valor
    //método para calcular el área del círculo
    public double calcularAreaCirculo(){
        double area=PI*(Math.pow(radio,2));//A=PI*radio^2
        return area;
    }
    //método para calcular la longitud del círculo
    public double calcularLongitudCirculo(){
        double perimetro=(radio*2)*PI; //P=2(radio)*PI  ó P=d*PI donde d=2*radio
        return perimetro;
    }
}//cierre de la clase


Clase TestCirculo

Código: [Seleccionar]
public class TestCirculo{//Nombre de la clase

    public static void main (String []args){
        Circulo objCirculo=new Circulo();//creo objeto circulo
        EntradaTeclado palabra=new EntradaTeclado();//creo objeto para entrada por teclado
        double area,longitud;//variables para almacerar las respuestas de los calculos
        System.out.println("~~~~~~~~~Programa Circulo-manejo de constantes(variable static final)~~~~~~~~~~~~~~~~~");
        System.out.print("Por favor, ingrese el radio del círculo:");

        objCirculo.setRadio( Double.valueOf( palabra.ingresoTeclado() ));//establesco el radio
        area=objCirculo.calcularAreaCirculo();//calculo el area
        longitud=objCirculo.calcularLongitudCirculo();//calculo la longitud
        System.out.println("El área del círculo es ["+area+"] y La longitud del círculo es ["+longitud+"]");//presento resultados
    }//cierre del main
}//cierre de la clase


Tengo una consulta:

¿Cómo puedo validar que el Ingreso por teclado sea un valor numerico o decimal?
Ya que por ejemplo si por error digito "J" me va a salir un error de ejecución.

Gracias por su atención.

5
Buenas noches estimados, estaba resolviendo el ejercicio de java(CU00657B)

Citar
(CU00657B)

Crea una clase con un método main que pida una entrada de teclado y usando condicionales, el método length de la clase String y el método substring de la clase String, muestre un mensaje indicando:

a) Si la cadena introducida tiene menos de 5 caracteres, entre 5 y 15 caracteres o más de 15 caracteres.

b) Si la cadena introducida comienza por la letra a.

Ejemplo: se pide la entrada y el usuario introduce “vereda”. Por pantalla se debe
mostrar: “La cadena introducida tiene entre 5 y 15 caracteres y no comienza por a”.

Pero me topé con un problema al comparar la cadena con el caracter "a", digamos asi <if(textoPrimerCaracter=="a")>, no me realizaba la comparación correctamente aunque la lógica me parecia bien, tuve que emplear un método de String "equalsIgnoreCase()" para poder obtener un valor logico(true o false) de esta forma <esVocaA=texto.equalsIgnoreCase("a");> para poder saber si era la letra "a".

Tuve que investigar tanto en la API de Java como el foro, deberían en el curso editar una nota asi como se informa de los métodos length y substring, aunque si aclaran que hay que "investigar"  pero hay muchos novatos que no saben nada o en mi caso que estoy recordando el lenguaje JAVA que no se puede hacer estas comparaciones de esa forma como si fuesen enteros a menos que se emplee algun método de la clase de JAVA String, afortunadamente recorde algo de otros lenguajes como c++ y python donde me dio una vez problemas con esto.

Es solo una sugerencia, espero no se vayan a molestar por esto.

A continuación mi respuesta al ejercicio, para su revisión estimados amigos.

Código: [Seleccionar]
import java.util.Scanner;//Importación del código de la clase Scanner desde la biblioteca Java
public class TestPrograma2{//Nombre de la clase
       
    //Principal
    public static void main (String []args){
    System.out.println("*****Programa manipulando cadenas*****");
    System.out.println("Ingrese una cadena por teclado:");
    //variables locales
    String cadena, texto ="";
    int tamaño=0;
    boolean esVocalA=false;
    //*************************ingreso por teclado
    Scanner objetoScanner=new Scanner(System.in);//creación de un objeto scanner
    cadena=objetoScanner.nextLine();//invocamos un método sobre un objeto Scanner
   
    texto=cadena.substring(0,1);//obtener primera letra de la cadena
    esVocalA =texto.equalsIgnoreCase("a");//Método de tipo String al comparar dos cadenas indiferente si es mayuscula o minuscula, devuelve true o false
    tamaño=cadena.length();//obtener el tamaño de la cadena
    //********fase de validación tamaño de la cadena
    if( tamaño < 5 ) {//Si tiene menos de 5 caracteres
        texto="tiene menos de 5 caracteres";
    }//cierre primera condición
    else if ( tamaño >= 5 && tamaño <= 15 ) {//Si tiene entre 5 y 15 caracteres
        texto="tiene entre 5 y 15 caracteres";
    }//cierre segunda condición
    else {//Si tiene mas de 15 caracteres
           texto="tiene más de 15 caracteres";
         }//cierre del ELSE
    //********fase de validación si primera letra comienza con "a-A"
    if (esVocalA) //Si es verdadero
             texto+=" y comienza por A ";
    else //Si es falso
             texto+=" y No comienza por A ";
    //Presentar respuesta por pantalla           
    System.out.println("La cadena introducida "+texto);     
    }//cierre del main
}//Cierre de la clase

6
Buenas estimados, favor darme revisando si esta bien el código.

Por cierto tuve que importar una clase  para poder usar un objeto y redondear o darle formato a una variable tipo double, ya que al hacer los calculos me salian hasta 9 decimales. No se si se puede omitir o hacer de otra forma. ;D

Código: [Seleccionar]
/* EJERCICIO
Fecha:12-09-2015
Define una clase denominada multiplicadorDieces con un constructor vacío y que contenga un método
denominado multiplicarPorDieces que reciba dos parámetros:
 el primero un número de tipo double y el segundo un número de tipo entero.
 El método debe devolver el resultado de multiplicar por 10 elevado al segundo número el primer número.
 Ejemplo: multiplicarPorDieces (2.55, 2) devuelve 2.55*100 = 255.
 multiplicarPorDieces (3, 5) devuelve 3*100000 = 300000.
 MultiplicarPorDieces (-0.0563, 3) devuelve -0.563 * 1000 = -56.3.
 Crea un objeto y comprueba que el método opera correctamente.
 Para comprobar si es correcta tu solución puedes consultar en los foros aprenderaprogramar.com.
*/
import java.text.*;//importo clase para poder dar formato a tipo "double" a 2 numeros
public class multiplicadorDieces{//Nombre de la clase
    //Sin atributos para el eljemplo
    //Constructor general vacio
    public multiplicadorDieces(){  }
    //método
    public String multiplicarPorDieces(double num1, int num2){
        int acumulador=1;
        String cadena="";
        for(int x=1;x<=num2;x++){
            acumulador*=10;
        }
        DecimalFormat df = new DecimalFormat("#.##");//creo objeto df
        cadena="Multiplicador por Dieces: "+ num1 + " * " + acumulador + " = " +df.format (num1*acumulador);
        System.out.println(cadena);
        return cadena;
       
    }//cierre del método

}//cierre de la clase Abstracta

Gracias por su ayuda.

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