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

Páginas: [1] 2
1
Buenas, dejo las respuestas al ejercicio.Gracias! Saludos,

Edu.

EJERCICIO

Citar
¿Se puede acceder a un objeto anónimo contenido en un ArrayList?
Si, al disponer del puntero podemos acceder a la información contenida.

Citar
¿Se puede inicializar un objeto de una clase que contiene tres atributos de tipo objeto declarando en el constructor que los atributos se inicializan mediante objetos anónimos?
Si, vinimos haciéndolo cuando iniciábamos los constructores de clases con valores, por ejemplo, "0", "Desconocido" o "".

2
Buenas, dejo otro ejercicio, el CU00667B del curso básico de programación Java. Gracias de antemano. Saludos,

Edu.

Citar
EJERCICIO

Crea una clase denominada ListaCantantesFamosos que disponga de un atributo ArrayList listaCantantesFamosos que contenga objetos de tipo CantanteFamoso. La clase debe tener un método que permita añadir objetos de tipo CantanteFamoso a la lista. Un objeto de tipo CantanteFamoso tendrá como atributos nombre (String) y discoConMasVentas (String), y los métodos para obtener y establecer los atributos. Crea una clase test con el método main que inicialice un objeto ListaCantantesFamosos y añade manualmente dos objetos de tipo CantanteFamoso a la la lista. Usando iterator muestra los nombres de cada cantante y su disco con más ventas por pantalla. Se debe pedir al usuario un nombre y disco con más ventas de otro cantante famoso, y una vez introducidos los datos mostrar la lista actualizada usando iterator. Una vez mostrada la lista actualizada, se debe dar opción a elegir entre volver a introducir los datos de otro cantante o salir del programa (se podrán introducir tantos datos de cantantes como se desee. Para ello usa un bucle while que dé opción a elegir al usuario). Puedes comprobar si tu código es correcto consultando en los foros aprenderaprogramar.com.


Clase (main): TestListaCantantesFamosos

Código: [Seleccionar]
// (CU00667B) - Tipo Iterator api Java. Ejemplo.
public class TestListaCantantesFamosos{
    public static void main(String[] Args){
        System.out.println("Inicio del programa.");
        System.out.println("====================");
       
        // Inicializar Lista.
        ListaCantantesFamosos2 listaCantantes = new ListaCantantesFamosos2();
       
        // Agregar Primer Cantante (carga inicial.)
        CantanteFamoso cantanteFamoso1 = new CantanteFamoso();
        cantanteFamoso1.setCantanteFamoso("Madonna", "All I want is you");
        listaCantantes.addCantanteFamoso(cantanteFamoso1);
       
        // Agregar Segundo Cantante (carga inicial.)
        CantanteFamoso cantanteFamoso2 = new CantanteFamoso();
        cantanteFamoso2.setCantanteFamoso("Jorge Negrete", "Jalisco");
        listaCantantes.addCantanteFamoso(cantanteFamoso2);

        listaCantantes.listarCantantesFamosos();

        String auxSeguirIngresando = "s";
       
        while(auxSeguirIngresando.equalsIgnoreCase("s")){
            listaCantantes.addCantanteFamoso(); 
            listaCantantes.listarCantantesFamosos();
           
            EntradaDeTeclado auxRespuesta = new EntradaDeTeclado("Continua Ingresando cantantes? (S/N)");
            auxSeguirIngresando = auxRespuesta.getEntrada();
        }
    }
}


Clase: ListaCantantesFamosos2

Código: [Seleccionar]
// (CU00667B).

import java.util.ArrayList;
import java.util.Iterator;

public class ListaCantantesFamosos2{
    private ArrayList<CantanteFamoso> listaCantantesFamosos;
   
    public ListaCantantesFamosos2(){
        listaCantantesFamosos = new ArrayList<CantanteFamoso>();
    }
       
    public void addCantanteFamoso(){
        CantanteFamoso cantanteFamoso = new CantanteFamoso();
       
        EntradaDeTeclado entrada1 = new EntradaDeTeclado("Por favor, ingrese el nombre del cantante: ");
        cantanteFamoso.setCantante(entrada1.getEntrada());
       
        EntradaDeTeclado entrada2 = new EntradaDeTeclado("Por favor, ingrese el nombre del disco más ventas");
        cantanteFamoso.setDiscoConMasVentas(entrada2.getEntrada());
       
        listaCantantesFamosos.add(cantanteFamoso);
    }
   
    public void addCantanteFamoso(CantanteFamoso cantanteFamoso){
        listaCantantesFamosos.add(cantanteFamoso);
    }
   
    public void listarCantantesFamosos(){
        System.out.println("La lista actualizada contiene los siguientes datos:");
        Iterator<CantanteFamoso> it = listaCantantesFamosos.iterator();
        while (it.hasNext()){
            CantanteFamoso cantante = it.next();
            System.out.println("Cantante: " + cantante.getCantante() + " - Disco con más ventas: " + cantante.getDiscoConMasVentas());
        }
    }
}


Clase: CantanteFamoso

Código: [Seleccionar]
public class CantanteFamoso{
    String cantante;
    String discoConMasVentas;
   
    public CantanteFamoso(){
        cantante = "";
        discoConMasVentas = "";
    }

    // Setters.
    public void setCantante(String valorCantante){
        cantante = valorCantante;
    }
    public void setDiscoConMasVentas(String valorDiscoConMasVentas){
        discoConMasVentas = valorDiscoConMasVentas;
    }
   
    public void setCantanteFamoso(String valorCantante, String valorDiscoConMasVentas){
        cantante = valorCantante;
        discoConMasVentas = valorDiscoConMasVentas;
    }
   
    // Getters.
    public String getCantante(){return cantante;}
    public String getDiscoConMasVentas(){return discoConMasVentas;}
}

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

public class EntradaDeTeclado {
    private String entradaTeclado; //Variable de instancia (campo) de la clase
 
    // Constructor.
    public EntradaDeTeclado ()  {
        pedirEntrada(); //Esto es una llamada a un método interno. Al crear un objeto ejecutamos el método
    } //Cierre del constructor

    public EntradaDeTeclado(String textoPregunta){
        System.out.println(textoPregunta);
        pedirEntrada();
    }
   
    // Función interna de la clase en la que recibe un texto ingresado por teclado del usuario.
    public void pedirEntrada ()  {  //Método de la clase         
        entradaTeclado="";
        Scanner entradaEscaner = new Scanner (System.in);
        entradaTeclado = entradaEscaner.nextLine ();}
   
    // Getter, devuelve el texto ingresado.
    public String getEntrada () { return entradaTeclado;}
   
    // Getter devuelve la primer palabra del texto ingresado.
    public String getPrimeraPalabra ()  {
        for (int i=0; i < entradaTeclado.length() - 1; i++) {
            if (entradaTeclado.substring (i, i+1).equals(" ") ) {     //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS
                return entradaTeclado.substring(0, i+1);}
        }
        return entradaTeclado;
    }
   
    // Función, devuelve la longitud (en caracteres) del texto ingresado.
    public int getLongitud ()  {  //Método de la clase
        return entradaTeclado.length();
    }

}

3
Buenas, comparto la solución del ejercicio de referencia CU00666B del curso de programación Java para no expertos. Muchas gracias, saludos.

Edu.

Citar
EJERCICIO

Crea una clase denominada ListaCantantesFamosos que al ser inicializada contenga un ArrayList con tres Strings que sean el nombre de cantantes famosos. Crea una clase test con el método main que inicialice un objeto ListaCantantesFamosos y usando un for extendido muestre los cantantes en la lista por pantalla. Se debe pedir al usuario un nombre más de cantante famoso, y una vez introducido mostrar la lista actualizada usando un for extendido. Una vez mostrada la lista actualizada, se debe dar opción a elegir entre volver a introducir otro cantante o salir del programa (se podrán introducir tantos cantantes como se desee, para ello usa un bucle while que dé opción a elegir al usuario).

https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=632:el-for-extendido-o-bucles-for-each-en-java-ventajas-e-inconvenientes-ejercicio-ejemplo-resuelto-cu00666b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

Código: [Seleccionar]
// (CU00666B) - El for extendido o bucles for each en Java.
public class TestListaCantantes{
    public static void main (String [] args){
        // Inicio del programa.
        System.out.println("Inicio del programa");
       
        // Crear colección de Lista de cantantes famosos.
        ListaCantantesFamosos listaCantantes = new ListaCantantesFamosos("Cantantes famosos");

        // Agregado de 3 cantantes.
        listaCantantes.addNombre("Madonna");
        listaCantantes.addNombre("Sting");
        listaCantantes.addNombre("Carlos Gardel");

        // Listado de cantantes.
        listaCantantes.listarCantantes();

        String auxRespuesta; // auxiliar a usar para salir del do while.
       
        // Utilizo do while, en vez de while, porque la consigna del ejercicio indica que hay que solicitar al usuario un nuevo ingreso y de este modo se evita una pregunta.
         do {
            // Solicitar un cantante más al usuario.
            listaCantantes.pedirYAgregarUnCantante();
            // Listado de cantantes.
            listaCantantes.listarCantantes();
           
            // Consulta si desea seguir ingresando cantantes.
            System.out.println("¿Desea continuar ingresando cantantes famosos?: (S/N)");
            EntradaDeTeclado entrada1 = new EntradaDeTeclado();
            auxRespuesta = entrada1.getEntrada();
           
        } while (auxRespuesta.equalsIgnoreCase("S"));
    }
}

Código: [Seleccionar]
// (CU00665B) - Clase ArrayList del api Java.
import java.util.ArrayList; // clase utilizada para el uso de ArrayList.

public class ListaCantantesFamosos{
    private String nombreDeLaLista;
    private ArrayList<String> listaCantantesFamosos;
   
    public ListaCantantesFamosos(String nombre){         // Constructor.
        nombreDeLaLista = nombre;
        listaCantantesFamosos = new ArrayList<String>(); // Crea objeto del tipo ArrayList.
    }
   
    // Agregar elemento a la lista.
    public void addNombre (String valor_nombre){listaCantantesFamosos.add(valor_nombre);}
   
    // Getter tamaño de lista.
    public int getTamannoLista (){return listaCantantesFamosos.size();}
   
    //  Getter nombres.
    public String getNombreCantante(int posicion){return listaCantantesFamosos.get(posicion);}
   
    // Listar cantantes, usando un for extendido.
    public void listarCantantes(){
        System.out.println ("La lista ha quedado formada por " + this.getTamannoLista() + " elementos");
        int i = 0;
        for (String nombreCantantes : listaCantantesFamosos){
            System.out.println ("Elemento " + (i+1) + ": " + this.getNombreCantante(i) );
            i++;
        }
    }
   
    public void pedirYAgregarUnCantante(){
            System.out.println("Por favor, ingrese el nombre de un cantante famoso: ");
            EntradaDeTeclado entrada1 = new EntradaDeTeclado();
            this.addNombre(entrada1.getEntrada());       
    }
       
}

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

public class EntradaDeTeclado {
    private String entradaTeclado; //Variable de instancia (campo) de la clase
 
    // Constructor.
    public EntradaDeTeclado ()  {
        entradaTeclado="";
        pedirEntrada(); //Esto es una llamada a un método interno. Al crear un objeto ejecutamos el método
    } //Cierre del constructor
 
    // Función interna de la clase en la que recibe un texto ingresado por teclado del usuario.
    public void pedirEntrada ()  {  //Método de la clase         
        Scanner entradaEscaner = new Scanner (System.in);
        entradaTeclado = entradaEscaner.nextLine ();     }
   
    // Getter, devuelve el texto ingresado.
    public String getEntrada () { return entradaTeclado; }
   
    // Getter devuelve la primer palabra del texto ingresado.
    public String getPrimeraPalabra ()  {
        for (int i=0; i < entradaTeclado.length() - 1; i++) {
            if (entradaTeclado.substring (i, i+1).equals(" ") ) {     //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS
                return entradaTeclado.substring(0, i+1);         }
        }
        return entradaTeclado;
    }
   
    // Función, devuelve la longitud (en caracteres) del texto ingresado.
    public int getLongitud ()  {  //Método de la clase
        return entradaTeclado.length();
    }
}

4
Buenas, dejo un ejercicio para quien pueda revisarlo. Es el CU00665B del manual de programación en Java para no expertos. Gracias de antemano. Saludos,

Edu.

Citar
EJERCICIO

Crea una clase denominada ListaCantantesFamosos que al ser inicializada contenga un ArrayList con tres Strings que sean el nombre de cantantes famosos. Crea una clase test con el método main que inicialice un objeto ListaCantantesFamosos, pida dos cantantes famosos más al usuario, los añada a la lista y muestre el contenido de la lista por pantalla.

https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=631:clase-arraylist-del-api-java-metodos-add-size-etc-concepto-de-clase-generica-o-parametrizada-cu00665b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188


Código: [Seleccionar]
public class TestListaCantantes{
    public static void main (String [] args){
        System.out.println("Inicio del programa");
        System.out.println("Por favor, introduzca nombre 1:"); EntradaDeTeclado entrada1 = new EntradaDeTeclado();
        System.out.println("Por favor, introduzca nombre 2:"); EntradaDeTeclado entrada2 = new EntradaDeTeclado();
        System.out.println("Gracias");
       
        ListaCantantesFamosos listaCantantes = new ListaCantantesFamosos("Cantantes famosos");

        // Agregado de 3 cantantes.
        listaCantantes.addNombre("Madonna");
        listaCantantes.addNombre("Sting");
        listaCantantes.addNombre("Carlos Gardel");
       
        // Pedido de dos nombres al usuario.
        listaCantantes.addNombre (entrada1.getEntrada() );
        listaCantantes.addNombre (entrada2.getEntrada() );
       
        System.out.println ("La lista ha quedado formada por " + listaCantantes.getTamañoLista() + " elementos");
        for (int i = 0; i < listaCantantes.getTamañoLista(); i++){
            System.out.println ("Elemento " + i + ": " + listaCantantes.getNombreCantante(i) );
        }
    }
}

Código: [Seleccionar]
// (CU00665B) - Clase ArrayList del api Java.
import java.util.ArrayList;

public class ListaCantantesFamosos{
    private String nombreDeLaLista;
    private ArrayList<String> listaCantantesFamosos;
   
    public ListaCantantesFamosos(String nombre){         // Constructor.
        nombreDeLaLista = nombre;
        listaCantantesFamosos = new ArrayList<String>(); // Crea objeto del tipo ArrayList.
    }
   
    // Agregar elemento a la lista.
    public void addNombre (String valor_nombre){listaCantantesFamosos.add(valor_nombre);}
   
    // Getter tamaño de lista.
    public int getTamañoLista (){return listaCantantesFamosos.size();}
   
    //Getter nombres.
    public String getNombreCantante(int posicion){return listaCantantesFamosos.get(posicion);}
}

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

public class EntradaDeTeclado {
    private String entradaTeclado; //Variable de instancia (campo) de la clase
 
    public EntradaDeTeclado ()  { //Constructor
        entradaTeclado="";
        pedirEntrada(); //Esto es una llamada a un método interno. Al crear un objeto ejecutamos el método
    } //Cierre del constructor
 
    public void pedirEntrada ()  {  //Método de la clase         
        Scanner entradaEscaner = new Scanner (System.in);
        entradaTeclado = entradaEscaner.nextLine ();     }
 
    public String getEntrada () { return entradaTeclado; }
   
    public String getPrimeraPalabra ()  {
        for (int i=0; i < entradaTeclado.length() - 1; i++) {
            if (entradaTeclado.substring (i, i+1).equals(" ") ) {     //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS
                return entradaTeclado.substring(0, i+1);         }
        }
        return entradaTeclado;
    }
 
    public int getLongitud ()  {  //Método de la clase
        return entradaTeclado.length();
    }
}

5
Buenas, respuestas al cuestionario del ejercicio CU00664B del manual de programación en Java desde cero. Gracias de antemano, saludos,

Edu.


EJERCICIO

Consulta la clase Stack en el API de Java.
¿Cómo se llama el método para consultar el objeto en la cima de la pila?
peek.

¿Cómo se llama el método para consultar si la pila está vacía?
empty.

¿El método pop podríamos clasificarlo como tipo procedimiento, como tipo función, o como tipo mixto (procedimiento y función)?
Mixto.
Procedimiento porque quita el objeto que está en la parte superior de la pila.
Función porque devuelve como valor el objeto removido de la pila.

6
Buenas, voy a intentar responder a las preguntas del ejercicio CU00663B del manual para el aprendizaje de la programación Java desde cero, pero tengo muchas dudas al respecto. Gracias de antemano, saludos.

Edu.

EJERCICIO:
Considera una clase Java que se denomina TripulacionAvion y que tiene como atributos a tres objetos de tipo Persona: Persona piloto; Persona copiloto1; Persona copiloto2.

a) ¿Sería posible que al crear un objeto TripulacionAvion se produjera que piloto, copiloto1 y copiloto2 apuntaran a un mismo objeto, es decir, que existiera una relación de identidad entre los tres atributos?

Supongo que si, si los tres atributos fueran los mismos (la misma persona (objeto))

b) ¿Existiría relación de identidad cuando creemos un objeto TripulacionAvion entre los tres atributos si no se inicializaran en el constructor?

Al crear el objeto se "reservaría" un lugar en memoria pero sin contenido (null) hasta el momento por lo que creo que no existiría relación de identidad.

c) ¿Cuál sería el contenido de los atributos si no se inicializan en el constructor y creamos un objeto de tipo TripulacionAvion?

El contenido sería null.

7
Buenas, dejo la resolución del ejercicio de referencia CU00662B del manual de programación en Java para principiantes. Gracias de antemano. Saludos,

Edu.

Código: [Seleccionar]
// (CU00662B) - El método equals en Java.
import java.util.Scanner;

public class ComparacionLetraALetra{
    public static void main(String [] args){
        // Obtener las dos cadenas a comparar.
        System.out.println("Inicio del programa.");
       
        Scanner entradaEscaner = new Scanner (System.in);
        // Primer cadena a comparar.
        System.out.println("Por favor, ingrese la primer cadena a comparar:");
        String entradaTeclado1 = entradaEscaner.nextLine();
        // Segunda cadena a comparar.
        System.out.println("Por favor, ingrese la segunda cadena a comparar:");
        String entradaTeclado2 = entradaEscaner.nextLine();
       
        // Comparar cadenas.
        for (int i = 1; i <= entradaTeclado1.length() || i <= entradaTeclado2.length(); i++){
            if (i <= entradaTeclado1.length() && i <= entradaTeclado2.length()){
                System.out.println("¿Letra " + i + " igual en las dos palabras? "+ (entradaTeclado1.substring(i-1, i).equals(entradaTeclado2.substring(i-1, i))));
            } else if (entradaTeclado1.length() >= i){
                System.out.println("¿Letra " + i + " igual en las dos palabras? La palabra 2 no tiene letra " + i);
            } else {System.out.println("¿Letra " + i + " igual en las dos palabras? La palabra 1 no tiene letra " + i);}
        }
    }
}

8
Buenas, gracias por adelantado. Propuesta de solución para el ejercicio CU00659B del manual de programación en Java para principiantes. Saludos,

Edu.

Código: [Seleccionar]
// (CU00659B)- While y do while en Java (ciclos o bucles).
import java.util.Scanner;

public class DeletreoDePalabra{
    public static void main(String [] args){
        int i = 1; // variable a usarse como contador durante la evaluación de la cadena.
       
        // Solicitud de una cadena para evaluar.
        System.out.println("Inicio del programa.");
        System.out.println("Por favor, tipee un texto.");
       
        //Obtener cadena.
        Scanner entradaEscaner = new Scanner (System.in);
        String entradaTeclado = entradaEscaner.nextLine();
       
        // Evaluar cadena.
        while (i <= (entradaTeclado.length())){
            // Muestra un renglón con cada una de las letras de la cadena y enumera cada línea.
            System.out.println("Letra " + i + ": " + entradaTeclado.substring(i-1, i));
            i++;
        }
    }
}

9
Buenas, dejo otro ejercicio, el CU00658B del manual de programación en Java para no expertos. Muchas gracias, saludos.

Edu.

Código: [Seleccionar]
// (CU00658B)- Tipos de bucles Java. Bucle for. Operadores ++ y --.
import java.util.Scanner;

public class DeletreoDePalabra{
    public static void main(String [] args){
        // Solicitud de una cadena para evaluar.
        System.out.println("Inicio del programa.");
        System.out.println("Por favor, tipee un texto.");
       
        //Obtener cadena.
        Scanner entradaEscaner = new Scanner (System.in);
        String entradaTeclado = entradaEscaner.nextLine();
       
        // Evaluar cadena.
        for (int i = 1; i <= (entradaTeclado.length()); i++){
            // Muestra un renglón con cada una de las letras de la cadena y enumera cada línea.
            System.out.println("Letra " + i + ": " + entradaTeclado.substring(i-1, i));
        }
    }
}

10
Buenas, otro ejercicio más. El ejercicio CU00657B del tutorial Aprende a programar en Java como si estuvieras en primero ;)

Muchas gracias, saludos.

Edu.

PD: estuve un buen rato mirando por qué "corno" la comparación directa del caracter obtenido con el substring funcionaba correctamente :( Observando la resolución hecha por umadara encontré el compareTo ;) muchas gracias!

Código: [Seleccionar]
// (CU00657B).
import java.util.Scanner;

public class TestPrograma1{
    public static void main(String [] args){
        String cadenaAMostrar = "La cadena introducida tiene ";
       
        // Solicitud de cadena.
        System.out.println("Empezamos el programa.");
        System.out.println("Por favor introduzca una cadena por teclado:");
       
        // Obtener cadena.
        String entradaTeclado = "";
        Scanner entradaEscaner = new Scanner (System.in);
        entradaTeclado = entradaEscaner.nextLine();
       
        // Evaluar cadena.
        // Longitud de la entrada por teclado.
        if (entradaTeclado.length() < 5){
            cadenaAMostrar = cadenaAMostrar + "menos de 5 caracteres y ";}
            else if(entradaTeclado.length() <= 15){cadenaAMostrar = cadenaAMostrar + "entre 5 y 15 caracteres y ";}
            else {cadenaAMostrar = cadenaAMostrar + "más de 15 caracteres y ";}
       
        // Identificar primer caracter de la entrada por teclado.
        if (entradaTeclado.substring(0,1).compareTo("a") == 0 || entradaTeclado.substring(0,1).compareTo("A") == 0){
            cadenaAMostrar = cadenaAMostrar + "comienza por a";}
            else {cadenaAMostrar = cadenaAMostrar + "no comienza por a";}
           
        // Exhibe el resultado.
        System.out.println(entradaTeclado.substring(0,1) + " --- " + cadenaAMostrar);
    }
}

11
Buenas, dejo otro ejercicio. En este caso el CU00654B del taller de programación en java desde cero. Muchas gracias, saludos.

Edu.


Código: [Seleccionar]
// (CU00654B).
public class Profesor{
    private String nombre;
    private String apellidos;
    private int edad;
    private boolean casado;
    private boolean especialista;
   
    // Constructor1.
    public Profesor(){
        nombre = "";
        apellidos = "";
        edad = 0;
        casado = false;
        especialista = false;
    }
   
    // Constructor2.
    public Profesor(String nombre, String apellidos, int edad, boolean casado, boolean especialista){
        this.nombre = nombre;
        this.apellidos = apellidos;
        this.edad = edad;
        this.casado = casado;
        this.especialista = especialista;
    }
   
    // Setters Profesor.
    public void setNombre(String nombre){
        this.nombre = nombre;
    }
    public void setApellidos(String apellidos){
        this.apellidos = apellidos;
    }
    public void setEdad (int edad){
        this.edad = edad;
    }
    public void setCasado (boolean casado){
        this.casado = casado;
    }
    public void setEspecialista (boolean especialista){
        this.especialista = especialista;
    }
   
    // Getters Profesor.
    public String getNombre(){return nombre;}
    public String getApellidos(){return apellidos;}
    public int getEdad(){return edad;}
    public boolean getCasado(){return casado;}
    public boolean getEspecialista(){return especialista;}
}

12
Respuesta a preguntas. Reflexiona y responde a las siguientes preguntas:

a) ¿Es posible llamar a un método externo de un objeto que ha sido declarado pero no creado?

Entiendo que no.
 (tengo hecha una consulta en el ejericio: (CU00652B) )


b) ¿Es posible llamar a un método externo de un objeto “A” que ha sido declarado y creado pero cuyo constructor está vacío?
Si, lo hemos realizado con objetos que eran funciones. (ej: multiplicadorDieces)

c) Una llamada al método pow de la clase Math que hacemos dentro de un método definido en una clase ¿Es una llamada a un método interno o a un método externo? ¿La llamada al método pow se hace sobre un objeto declarado y creado o no declarado y no creado?
Es una llamada a un método externo, corresponde a la clase java.lang.Math
Se hace la llamada sobre un objeto declarado y creado en la API de Java.

Muchas gracias, saludos.
Edu.

13
Buenas... Me remito a la entrega CU00652B del manual de programación en Java para no expertos.

"Verifica con la calculadora si este valor es correcto y trata de razonar sobre por qué se obtiene este valor y no otro. Crea también distintos objetos de tipo Deposito y utiliza sus métodos. En el caso de resultados numéricos, comprueba si los resultados que te ofrece el ordenador son correctos comparándolos con los resultados que te ofrece una calculadora."

Si, obtengo como resultado el mismo valor.

Coinciden con los cálculos hechos con la calculadora debido a que es la sumatoria del volumen de los 3 depósitos.

Consultas:

(Incluyo el código escrito en el ejercicio de referencia.)


Código: [Seleccionar]
public class Deposito{
    private float diametro;
    private float altura;
    private String idDeposito;
   
    // Constructor sin parámetros auxiliares.
    public Deposito(){
        this(0,0,"");
    }
     
      //Constructor de la clase que pide los parámetros necesarios
    public Deposito (float valor_diametro, float valor_altura, String valor_idDeposito) {
        if (valor_diametro > 0 && valor_altura > 0) {           
            diametro = valor_diametro;
            altura = valor_altura;
            idDeposito = valor_idDeposito;
        } else {
            diametro = 10;
            altura = 5;
            idDeposito = "000";
            System.out.println ("Creado depósito con valores por defecto diametro 10 metros altura 5 metros id 000" );
        }   
    }
   
    public void setValoresDeposito (String valor_idDeposito, float valor_diametro, float valor_altura) {
        idDeposito = valor_idDeposito;
        diametro = valor_diametro;
        altura = valor_altura;
        if (idDeposito !="" && valor_diametro > 0 && valor_altura > 0) {
        } else {
            System.out.println ("Valores no admisibles. No se han establecido valores para el depósito");
            //Deposito (0.0f, 0.0f, ""); Esto no es posible. Un constructor no es un método y por tanto no podemos llamarlo
            idDeposito = "";
            diametro = 0;
            altura = 0;
        }     
    }

    public float getDiametro () { return diametro; } //Método de acceso
    public float getAltura () { return altura; } //Método de acceso
    public String getIdDeposito () { return idDeposito; } //Método de acceso
    public float valorCapacidad () { //Método tipo función
        float capacidad;
        float pi = 3.1416f; //Si no incluimos la f el compilador considera que 3.1416 es double
        capacidad = pi * (diametro/2) * (diametro/2) * altura;
        return capacidad;
    }   
}


Puntualmente dentro del setter:

Código: [Seleccionar]
    public void setValoresDeposito (String valor_idDeposito, float valor_diametro, float valor_altura) {
        idDeposito = valor_idDeposito;
        diametro = valor_diametro;
        altura = valor_altura;
        if (idDeposito !="" && valor_diametro > 0 && valor_altura > 0) {
        } else {
            System.out.println ("Valores no admisibles. No se han establecido valores para el depósito");
            //Deposito (0.0f, 0.0f, ""); Esto no es posible. Un constructor no es un método y por tanto no podemos llamarlo
            idDeposito = "";
            diametro = 0;
            altura = 0;
        }     
    }


1. En la condición del if se utiliza el operador lógico && (and) pero no debería ser || (or)?
Si sólo el diámetro o la altura es igual a 0 no sería un error?
Es decir, como está expresado el condicional sería posible que algunos de los dos valores mencionados fuese igual a 0 y daría por válido el depósito.
(ídem para el constructor.)

2. Y desde mi ignorancia, el setter puede ejecutarse sin previa creación del objeto?
Entiendo que no. Y si primero se crea el objeto, por el constructor los valores no serían 0 siendo innecesario el condicional, es así?

Disculpas si estoy diciendo alguna burrada pero siento que necesario consultarlo para aprender ;)

Gracias mil, saludos. Edu.

14
Buenas, dejo otro ejercicio, el CU00650B del manual de programación en Java para no expertos.

Código: [Seleccionar]
// (CU00650B).
public class Combinador{
    private String texto1;
    private String texto2;
   
    //Constructor.
    public Combinador (){texto1 = ""; texto2 = "";}
   
    // Primer método, sólo acepta cadenas mayores o igual a 3 caracteres de longitud.
    public String combinacion(String valorTexto1, String valorTexto2){
        if (valorTexto1.length() >= 3 && valorTexto2.length() >= 3){
            String combinacion = valorTexto1.substring(0,3) + " " + valorTexto2.substring(0,3);
            return combinacion;
        } else {return "No aporta cadenas válidas.";}
    }
   
    // Segundo método, acepta cadenas menores a caracteres de longitud.
    public String combinandoSiempre(String valorTexto1, String valorTexto2){
        int longitudTexto1 = 3;
        int longitudTexto2 = 3;
        String combinandoSiempre = "";
       
        if(valorTexto1.length() < 3){longitudTexto1 = valorTexto1.length();}
        if(valorTexto2.length() < 3){longitudTexto2 = valorTexto2.length();}
       
        combinandoSiempre = valorTexto1.substring(0,longitudTexto1) + " " + valorTexto2.substring(0,longitudTexto2);
        return combinandoSiempre;
    }
}

Preguntas:
1. Fíjate en el resultado que ofrece el método CombinadoSiempre cuando se le pasan como parámetros dos cadenas vacías. ¿Te parece lógico el resultado?
Si. El resultado de sumar dos cadenas vacías a un espacio es un espacio.

2. En la clase tenemos definidos dos atributos o campos. ¿Tienen utilidad conocida a la vista del código de la clase? ¿Se usan en los métodos que tenemos definidos?
No tienen utilidad. No se usan.

Muchas gracias, saludos.
Edu.



15
Buenas, dejo otro ejercicio. El CU00649B del manual de programador java como si estuvieras en primero. Gracias! Saludos,

Edu.

Código: [Seleccionar]
// (CU00649B).

public class combinarParteDeStrings{
    // Constructor vacío.
    public combinarParteDeStrings(){}
   
    // Función para combinar las cadenas.
    public String combinarCadenas(String cadena1, String cadena2, String cadena3){
        return cadena1.substring(0,2) + " " + cadena2.substring(0,4) + "-" + cadena3.substring(0,6);
    }
}


Otro tema:

De la lectura de la clase me surge una duda en:

"fraccionDeString = nombreDelString.substring (carácter Inicial Incluido, carácter Final Excluido)"
y al ver el ejemplo: “hamburger”.substring (4, 8 ); devuelve “urge”

Entiendo que el valor inicial ("4") no está incluido mientras que el valor final ("8") si lo está.
Revisé la documentación de Java y menciona lo mismo por lo que... no entiendo.

Gracias de antemano.







16
Buenas... Dejo la resolución del ejercicio CU00647B del manual de programador Java desde cero.

Código: [Seleccionar]
// (CU00647B).
import java.lang.Math; // Lo incluyo a efecto de usarlo por primera vez, la clase "Math" al pertenecer a java.lang no es necesario importarlo.

public class miniCalculadoraEjemplo{
   
    // Constructor vacío.
    public miniCalculadoraEjemplo(){}
   
    // Método1. Obtener el valor abosluto de un número.
    public double valorAbsoluto(double valorNumero){
        return Math.abs(valorNumero);
    }

    // Método2.Obtener la raíz cuadrada de un número.
    public double raizCuadrada(double valorNumero){
        return Math.sqrt(valorNumero);
    }
}

De ser posible tengo una consulta sobre el ejercicio anterior y este.
En ambos ejercicios las clases son del tipo función (por llamarlas de algún modo) y fueron nombradas en minúscula: multiplicadorDieces y miniCalculadoraEjemplo, a diferencia de lo que veníamos haciendo.
¿Es un modo de diferenciar la clase que estamos desarrollando?

Desde ya muchas gracias por el ejercicio y la consulta.

Saludos,
Edu.

17
Buenas, dejo la resolución del ejercicio CU00644B del taller de programación en java con ejercicios resueltos.

Gracias de antemano. Saludos,

Edu.

Código: [Seleccionar]
public class multiplicadorDieces{
   
    // Conostructor vacío.
    public multiplicadorDieces(){
    }
   
    //Método
    public double multiplicadorPorDieces(double valor, int exponente){
        if(exponente==0){return valor;
        } else {return 10 * multiplicadorPorDieces(valor, exponente-1);
        }
    }
}

18
Buenas, veremos qué tal en esta oportunidad! Se trata del ejercico CU00642B del taller Aprende a programar en Java como si estuvieras en primero ;)

Gracias de antemano! Saludos,

Edu.

Código: [Seleccionar]
// (CU00642B).
public class Casa{
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;
   
    // Constructor1, sin parámetros.
    public Casa(){
        superficie = 0;
        direccion = "desconocido";
        cocina = new CocinaCasa();
        salonCasa = new SalonCasa();
    }
   
    // Constructor2, con parámetros.
    public Casa(double valorSuperficie, String valorDireccion, SalonCasa objetoSalonCasa, CocinaCasa objetoCocina){
        superficie = valorSuperficie;
        direccion = valorDireccion;
        salonCasa = new SalonCasa(objetoSalonCasa.getNumeroDeTelevisores(), objetoSalonCasa.getTipoSalon());
        cocina = new CocinaCasa(objetoCocina.getEsIndependiente(), objetoCocina.getNumeroDeFuegos());
    }
   
    // Setters.
    public void setSuperficie(double valorSuperficie){
        superficie = valorSuperficie;
    }
    public void setDireccion(String valorDireccion){
        direccion = valorDireccion;
    }
    public void setSalonCasa(SalonCasa valorSalonCasa){
        salonCasa = valorSalonCasa;
    }
    public void setCocina(CocinaCasa valorCocina){
        cocina = valorCocina;
    }
       
    // Getters.
    public double getSuperficie(){return superficie;}
    public String getDireccion(){return direccion;}
    public SalonCasa getSalonCasa(){return salonCasa;}
    public CocinaCasa getCocina(){return cocina;}
}

Código: [Seleccionar]
// (CU00641B).
public class SalonCasa{
    private int numeroDeTelevisores;
    private String tipoSalon;
   
    //Constructor1.
    public SalonCasa(){
        numeroDeTelevisores = 0;
        tipoSalon = "desconocido";
    }
   
    // Constructor2.
    public SalonCasa(int valorNumeroDeTelevisores, String valorTipoSalon){
        numeroDeTelevisores = valorNumeroDeTelevisores;
        tipoSalon = valorTipoSalon;
    }
   
    // Setters.
    public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){
        numeroDeTelevisores = valorNumeroDeTelevisores;
    }
    public void setTipoSalon(String valorTipoSalon){
        tipoSalon = valorTipoSalon;
    }
   
    // Getters.
    public int getNumeroDeTelevisores(){return numeroDeTelevisores;}
    public String getTipoSalon(){return tipoSalon;}
}

Código: [Seleccionar]
// (CU00641B).
public class CocinaCasa{
    private boolean esIndependiente;
    private int numeroDeFuegos;
   
    //Constructor1.
    public CocinaCasa(){
        esIndependiente = false;
        numeroDeFuegos = 0;
    }
   
    //Constructor2. Con parámetros.
    public CocinaCasa(boolean valorEsIndependiente, int valorNumeroDeFuegos){
        esIndependiente = valorEsIndependiente;
        numeroDeFuegos = valorNumeroDeFuegos;
    }   
   
    // Setters.
    public void setEsIndependiente(boolean valorEsIndependiente){
        esIndependiente = valorEsIndependiente;
    }
    public void setNumeroDeFuegos(int valorNumeroDeFuegos){
        numeroDeFuegos = valorNumeroDeFuegos;
    }

    //Getters.
    public boolean getEsIndependiente(){return esIndependiente;}
    public int getNumeroDeFuegos(){return numeroDeFuegos;}
}

19
Buenas, comparto otro ejercicio: CU00641B del tutorial de programación en Java.

Nota al margen, decir que me cuesta un par de leídas sobre la clase. En si está muy bien explicada pero... me cuesta entender de primera  ;)

Agradezco a quienes se toman el tiempo para revisar el código y escribir sus correcciones y apreciaciones. Gracias mil.

Saludos,
Edu.

Código: [Seleccionar]
// (CU00641B).
public class SalonCasa{
    private int numeroDeTelevisores;
    private String tipoSalon;
   
    //Constructor.
    public SalonCasa(){
        numeroDeTelevisores = 0;
        tipoSalon = "desconocido";
    }
}

Código: [Seleccionar]
// (CU00641B).
public class CocinaCasa{
    private boolean esIndependiente;
    private int numeroDeFuegos;
   
    public CocinaCasa(){
        esIndependiente = false;
        numeroDeFuegos = 0;
    }
}

Código: [Seleccionar]
//
public class Casa{
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;
   
    //Constructor.
    public Casa(){
        superficie = 0;
        direccion = "desconocido";
        cocina = new CocinaCasa();
        salonCasa = new SalonCasa();
    }
}

20
Buenas, dejo otro ejercicio, el CU00640B del manual de programación en Java desde cero. Muchas gracias, saludos.

Edu.

Código: [Seleccionar]
public class Profesor{
    private String nombre;
    private String apellidos;
    private int edad;
    private boolean casado;
    private boolean especialista;
   
    // Constructor1.
    public Profesor(){
        nombre = "";
        apellidos = "";
        edad = 0;
        casado = false;
        especialista = false;
    }
   
    // Constructor2.
    public Profesor(String valorNombre, String valorApellidos, int valorEdad, boolean valorCasado, boolean valorEspecialista){
        nombre = valorNombre;
        apellidos = valorApellidos;
        edad = valorEdad;
        casado = valorCasado;
        especialista = valorEspecialista;
    }
   
    // Setters Profesor.
    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 setEspecialista (boolean valorEspecialista){
        especialista = valorEspecialista;
    }
   
    // Getters Profesor.
    public String getNombre(){return nombre;}
    public String getApellidos(){return apellidos;}
    public int getEdad(){return edad;}
    public boolean getCasado(){return casado;}
    public boolean getEspecialista(){return especialista;}
}

Páginas: [1] 2

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