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

Páginas: [1]
1
Gente, expongo el ejercicio y hago un par de comentarios para quien se ha vuelto un poco loco como yo a la hora de realizarlo.

Primero, gracias a todos los que han intentado realizar el ejercicio y lo han subido al foro, gracias a ellos pude constatar errores y solucionar otros.
Luego, muchas gracias a lo moderadores que han respondido las inquietudes, a traves de todos los comentarios y respuestas pude entender mejor los conceptos. Todavía me cuesta mucho este tema, pero creo que fue un gran avance

En este ejercicio lo que me resulto de mucha ayuda fue ir haciendo los comentario mientras iba planteando y escribiendo el codigo. Nota (leer sobre Pseudocodigo es fundamental en estos casos) Mas que nada cuando entraba en un ciclo y tenia que volver a preguntarme que hacer dentro de un nuevo ciclo anidado (en fin, el que hace este ejercicio entendera a lo que me refiero)

Consigna:
Citar
La interface Set de Java es implementada por las clases HashSet y TreeSet. Busca información sobre estas clases en la documentación del api Java. Crea un programa Java que haga lo siguiente:

a) Declarar un ArrayList de objetos de tipo Set.

b) Crear un objeto de tipo HashSet para contener Strings y haz que contenga las cadenas “sol”, “luna”, “saturno”.

c) Crear un objeto TreeSet para contener Integers y haz que contenga los números 2, 8, 5.

d) Añade los objetos HashSet y TreeSet como elementos del ArrayList.

e) Usa iteradores para recorrer los elementos del ArrayList y recorrer el contenido de cada uno de los elementos y mostrar este contenido por pantalla. Por pantalla deberás obtener “sol”, “luna”, “saturno”, 8, 5, 2.

Clase Test_Polimorfismo

Código: [Seleccionar]

import java.util.ArrayList;
import java.util.Set;
import java.util.HashSet;
import java.util.TreeSet;
import java.util.Iterator;

public class Test_Polimorfismo
{
    public static void main(String[] args)
    {
        // Declaro las 3 colecciones
        ArrayList<Set> miLista = new ArrayList<Set>();
        HashSet<String> miHashSet = new HashSet<String>();
        TreeSet<Integer> miTreeSet = new TreeSet<Integer>();
       // Asigno los elementos a cada lista
        miHashSet.add("sol"); miHashSet.add("luna"); miHashSet.add("saturno");
        miTreeSet.add(2); miTreeSet.add(8); miTreeSet.add(5);
        // Asigno las 2 listas a mi listado
        miLista.add(miHashSet); miLista.add(miTreeSet);
       
        //Creo un iterador para recorrer "miLista"
         Iterator<Set> it1 = miLista.iterator();
         
         // mientras el iterador que contiene la copia de "miLista" tenga elementos
         while(it1.hasNext())
         {
             Set tmp = it1.next(); // En tmp guardo ese elemento (que es tambien una lista)
             Iterator<Set> it2 = tmp.iterator();// entonces creo un nuevo iterador para pasarle una copia de tmp (que habiamos dicho es una lista tambien)
             while(it2.hasNext()) // Entonces, mientras it2 (iterador de mi sublista), tenga elementos
             {
                System.out.print( it2.next() + ","); // mostrara cada uno de ellos
               
             }                                 
         }
    }
}
 

Como muchos, he tenido problemas cuando trataba de hacer una clasificacion tanto con los Strings como con los Integers, al final vi un comentario de "Cesar Krall" para "betico"
que me ayudo a entender y hacer mas simple el codigo, les paso el link: https://www.aprenderaprogramar.com/foros/index.php?topic=912.msg5263#msg5263
Gracias  a los dos.

Este ejercicio (creo) retorna la consigna de manera correcta, espero les sirva!

Saludos.

2
Respuesta al ejercicio CU00675B del tutorial de aprendizaje de programación Java desde cero:

Consigna:

Citar
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?

Este array en particular almacena datos de tipo primitivo.
El ArrayList almacena tipos de datos complejos (objetos) y tipos de datos primitivos.

Clase TestCopiaArrays
Código: [Seleccionar]
import java.util.ArrayList;
public class TestCopiaArrays {
   
    public static void main (String [ ] Args) {
       
        int[] miArray1 = {2, -4, 3, -7};
        ArrayList<Integer> lista1 = new ArrayList<Integer>();
       
        for(int i =0 ; i<miArray1.length;i++)
        {
            System.out.println("miArray1["+i+"]=" + miArray1[i]);
            lista1.add(miArray1[i]);
            System.out.println("lista1 = "+lista1.get(i));
        }
    }           
}

Saludos!!

3
Ejercicio CU00672B del tutorial básico de programación Java desde cero

Consigna:
Citar
Crea un programa Java que permita “jugar a adivinar un número” como se expone a continuación. El programa debe iniciarse indicando “Se ha generado un número aletatorio entero entre 1 y 100, intente adivinarlo”. El usuario introducirá un número y si el número aleatorio generado por el ordenador es menor deberá indicarse “No has acertado: el número es menor. Prueba otra vez”. Si el usuario introduce un número menor que el número aleatorio deberá indicarse “No has acertado: el número es mayor”. El programa terminará cuando el usuario introduzca el número aleatorio que había escogido el ordenador.

En este ejercicio cree la Clase Juego para tratar de no llenar demasiado la Clase principal (main) de todas formas no se si logre algo.
Al final el objeto juego solo quedo como lo que realmente es un generador de numeros, para obtenerlos y setearlos.
Lo bueno es que "al parecer" cumple con la consigna. Pero mejor eso se lo dejo a los que saben  8)

Clase EntradaTeclado
Código: [Seleccionar]
import java.util.Scanner; // Clase para poder manejar el ingreso de datos por el teclado

public class EntradaTeclado
{
    private String entrada; // Atributo
    public EntradaTeclado(){entrada = "";} // constructor vacio
    public String getDato(){return entrada;} // getter
    public void ingresoDato() // Creo un obj Scanner, utilizo su metodo para leer la linea ingresada
                              // y la guardo en el atributo
    {
        Scanner sc = new Scanner(System.in);
        entrada = sc.nextLine();
    }
}

Clase Juego
Código: [Seleccionar]
import java.util.Random;

public class Juego
{
    private String numeroElegido;
    private Integer numeroAleatorio;
   
    public Juego()
    {
        numeroElegido = "";
        numeroAleatorio = 0;
    }
   
    public void generarRandom()
    {
    Random objRandom;
    objRandom = new Random();
    numeroAleatorio = objRandom.nextInt(101);
    }
   
    public Integer getNumeroGenerado(){return numeroAleatorio;}
   
    public void setNumeroElegido(String elNumero)
    {
        numeroElegido = elNumero;
    }
    public Integer getNumeroElegido()
    {
        Integer tmpInteger = 0;
        return tmpInteger = tmpInteger.valueOf(numeroElegido);
    }
   
}

Clase TestJuego
Código: [Seleccionar]
public class TestJuego
{
    public static void main(String[] args)
    {
        EntradaTeclado entrada = new EntradaTeclado();
        Juego miJuego = new Juego();
        miJuego.generarRandom();
        System.out.println("Jugar a adivinar un numero\nintroduzca un numero entre el 0 y 100");
        entrada.ingresoDato();
           
        while( !entrada.getDato().equals(miJuego.getNumeroGenerado()))
        {
            if(Integer.valueOf(entrada.getDato()) < miJuego.getNumeroGenerado())
            {
                System.out.println("No has adivinado\nUna pista: Tu numero es menor que el numero a encontrar");
                System.out.println("volve a intentarlo");
                entrada.ingresoDato();
            }
            else if(Integer.valueOf(entrada.getDato()) > miJuego.getNumeroGenerado())
            {
                System.out.println("No has adivinado\nUna pista: Tu numero es mayor que el numero a encontrar");
                System.out.println("volve a intentarlo");
                entrada.ingresoDato();
            }
            else
            {
                System.out.println("Felicidades, has acertado el numero, el cual era:" + miJuego.getNumeroGenerado());
                break;
            }
        }
        System.out.println("El programa ha finalizado");
    }
}

Saludos!!

4
Ejercicio CU00669B del tutorial de programación Java desde cero

Consigna:
Citar
Crea una clase con el método main donde declares una variable de tipo array de Strings que contenga los doce meses del año, en minúsculas y declarados en una sola línea. A continuación declara una variable mesSecreto de tipo String, y hazla igual a un elemento del array (por ejemplo mesSecreto = mes[9]. El programa debe pedir al usuario que adivine el mes secreto y si acierta mostrar un mensaje y si no pedir que vuelva a intentar adivinar el mes secreto.

Código: [Seleccionar]
import java.util.Scanner; // Clase para poder obtener la entrada por el teclado

public class Principal
{
    public static void main(String[] args)
    {
        String [] mesesDelAnno = {"enero","febrero","marzo","abril","mayo","juntio",
            "julio","agosto","septiembre","octubre","noviembre","diciembre"};
        String mesSecreto = mesesDelAnno[3];
       
        String entrada = ""; // variable para contener la entrada del usuario
        Scanner sc = new Scanner(System.in); // el objeto escaner que se encarga de tomar el valor
       
        System.out.println("Adivine cual \"es el mes secreto\"");
        System.out.println("ingrese el mes:");
        entrada = sc.nextLine();
       
        // No es parte de la consigna!!! lo puse porque era facil y le daba otro enfoque a la respuesta :D
        // contado para saber cuantas veces, el usuario intento el usuario adivinar
        int intentos = 1;
        while (!entrada.toLowerCase().equals(mesSecreto)) // la condicion analiza el texto ingresado y lo compara en minuscula
        {
            System.out.println("No has adivinado, intentalo nuevamente:");
            System.out.println("ingrese el mes:");
            entrada = sc.nextLine();
            intentos++; // cada vez que ingresa un mes, el contador aumenta en 1
        }
            System.out.println("Adivinaste que el mes secreto era " + entrada + " y en solo " + intentos
            + " intentos");
    }
}

Saludos!!

5
Terminé este ejercicio, me apoyé también en el código que había subido "xBag" (muchas gracias). He tratado de economizar el codigo lo mas que pude, en las Clases: CantanteFamoso y ListaCantantesFamosos fue donde menos se complico hacerlo
lamentablemente sigo viendo muy extenso el "main" de la Clase Test, supongo que con mas practica se podra hacer mucho mas sencillo.

DUDA: en las lineas 11 y 12 de "Test" tengo comentado 2 instrucciones que funcionan igual de bien que en las 14 y 15. Ahora, mi duda es la siguiente:
en las lineas comentadas tengo definidos e instanciados 2 objetos que tienen nombre
pero en las otras 2, solo veo que tengo creados 2 objetos ya dentro de la lista y no tienen nombre, si bien el codigo funciona como corresponde, ¿hay alguna diferencia entre esos objetos?

Clase CantanteFamoso
Código: [Seleccionar]
public class CantanteFamoso
{
   private String nombre; //Atributos
   private String discoConMasVentas;// Atributos   
   // Constructor sin parametros
   public CantanteFamoso()
   {
       nombre = "";
       discoConMasVentas = "";
   }
   // Constructor con parametros
   public CantanteFamoso(String nombre, String discoConMasVentas)
   {
       this.nombre = nombre;
       this.discoConMasVentas = discoConMasVentas;
   }
   // setters
   public void setNombre(String nombre){this.nombre = nombre;}
   public void setDiscoConMasVentas(String discoConMasVentas){this.discoConMasVentas = discoConMasVentas;}
   // getters
   public String getNombre(){return nombre;}
   public String getDiscoConMasVentas(){return discoConMasVentas;}
}


Clase ListaCantantesFamosos
Código: [Seleccionar]
import java.util.ArrayList; // Importo la clase que me permitira crear las listas
import java.util.Iterator;  // Importo la clase con la cual creare el objeto "it" (para poder modificar la copia de la lista

public class ListaCantantesFamosos
{
   private ArrayList<CantanteFamoso> listaCantantesFamosos; // Atributo, en este caso una lista
   
   // Constructor
   public ListaCantantesFamosos()
   {
       listaCantantesFamosos = new ArrayList<CantanteFamoso>();
   }
   // Setter
   public void addCantanteFamoso(CantanteFamoso elCantante)
   {
       listaCantantesFamosos.add(elCantante);
   }
   // getter
   public CantanteFamoso getCantanteFamoso(int elCantante)
   {
       return listaCantantesFamosos.get(elCantante);
   }
   // Este metodo no se ha usado en el ejercicio. Elimina un elemento de la lista
   public String removeCantanteFamoso(int elCantante)
   {
      if (elCantante >= 0 && elCantante < listaCantantesFamosos.size())
      {
          listaCantantesFamosos.remove(elCantante);
          return "Se ha eliminado el cantante seleccionado";
      }
      else
      {
          return "El cantante seleccionado no se encuentra en la lista";
      }
   }
   // procedimiento para mostrar la lista de CantantesFamosos
   public void mostrarLista()
   {
       Iterator<CantanteFamoso> it = listaCantantesFamosos.iterator();
       CantanteFamoso tmpCantante;
       while(it.hasNext())
       {
           tmpCantante = it.next();
           System.out.println("Cantante: " + tmpCantante.getNombre() + " disco con mayor venta: "+
           tmpCantante.getDiscoConMasVentas());
       }
   }
}

Clase Test
Código: [Seleccionar]
import java.util.Scanner; // Clase para poder trabajar con el flujo de datos

public class Test
{
   public static void main(String[] args)
   {
       Scanner sc = new Scanner(System.in);
       String nombre, disco, eleccion;
       ListaCantantesFamosos miLista = new ListaCantantesFamosos();
       
       //CantanteFamoso cantante1 = new CantanteFamoso("Artista1", "AlbumMasVendido1");
       //CantanteFamoso cantante2 = new CantanteFamoso("Artista2", "AlbumMasVendido2");
   
       miLista.addCantanteFamoso(new CantanteFamoso("Paul McCartney","Capitol"));
       miLista.addCantanteFamoso(new CantanteFamoso("Freddie Mercury","A Night at the Opera"));

       
       System.out.println("La lista inicial contiene los siguientes datos:");
       miLista.mostrarLista();
       System.out.println("Por favor introduzca los datos de otro cantante.");
       System.out.print("Nombre:");
       nombre = sc.nextLine();
       System.out.print("Disco con mas ventas:");
       disco = sc.nextLine();
       miLista.addCantanteFamoso(new CantanteFamoso(nombre,disco));
       System.out.println("La lista actualizada es la siguiente:");
       miLista.mostrarLista();
       
       System.out.println("¿Desea introducir los datos de otro cantante (s/n)?");
       eleccion = sc.nextLine();
       eleccion.toLowerCase(); // metodo de la clase String para que convierta su valor a minuscula
       while(!"n".equals(eleccion)) // Condicion: Mientras no ingresemos "n" se repetira el while
       {
           System.out.println("Por favor introduzca los datos de otro cantante.");
           System.out.print("Nombre:");
           nombre = sc.nextLine();
           System.out.print("Disco con mas ventas:");
           disco = sc.nextLine();
           miLista.addCantanteFamoso(new CantanteFamoso(nombre,disco));
           System.out.println("La lista actualizada es la siguiente:");
           miLista.mostrarLista();
           System.out.println("¿Desea introducir los datos de otro cantante (s/n)?");
           eleccion = sc.nextLine();
           eleccion.toLowerCase();
       }
       
       System.out.println("Su lista de cantantes ha quedao de la siguiente manera:");
       miLista.mostrarLista();
       // Siempre trato de poner esta ultima linea, para constatar de que el programa ha llegado
       // hasta el final
       System.out.println("El programa ha finalizado\n\n");   
   }
}
 

Saludos! :)


6
Hola gente. Quería pasárles mi primer código, del ejercicio en cuestión (CU00666B)
lo he compilado y al parecer funciona bien. No he puesto comentarios, sobre el mismo
pero para el próximo que suba lo haré por si en alguna parte el código es confuso con respecto al funcionamiento

Class ListaCantantesFamosos

Código: [Seleccionar]

import java.util.ArrayList;

public class ListaCantantesFamosos
{
    private String nombreDeLaLista;
    private ArrayList<String> listaCantantesFamosos;
   
    public ListaCantantesFamosos(String nombreLista)
    {
        nombreDeLaLista = nombreLista;
        listaCantantesFamosos = new ArrayList<String>();
        listaCantantesFamosos.add("Robert Smith");
        listaCantantesFamosos.add("Robert Plant");
        listaCantantesFamosos.add("Freddie Mercury");
        listarCantantes();
       
    }
   
    public String getCantante(int elemento)
    {
        if (elemento >= 0 && elemento < listaCantantesFamosos.size())
        { return listaCantantesFamosos.get(elemento);}
        else
        { return "no existe la posicion"; }
    }
   
    public void setCantante(String elCantante)
    { listaCantantesFamosos.add(elCantante); }
   
    public void listarCantantes()
    {
        int i = 1;
        System.out.println("Nombre de la lista: " + nombreDeLaLista);
        for(String cantante : listaCantantesFamosos)
        {
            System.out.println(i + " - " + cantante);
            i++;
        }
    }
}

Clase principal (Test)
Código: [Seleccionar]
import java.util.Scanner;

public class Test
{
   public static void main(String[] args)
   {
       ListaCantantesFamosos lista = new ListaCantantesFamosos("Fenomenos");
       Scanner sc = new Scanner(System.in);
       String entrada = "";
       System.out.println("ingrese un nuevo cantante a la lista");
       lista.setCantante((entrada = sc.nextLine()));
               
       do
       {
           System.out.println("Desea ingresar un nuevo cantante? \"Si\" o \"No\"");
           entrada = sc.nextLine();
           
           if( entrada.equals("si"))
           {
            System.out.println("Nombre:");
            lista.setCantante((entrada = sc.nextLine()));
           }           
           else
           {
               entrada = "no";
               lista.listarCantantes();
           }
       }while(!"no".equals(entrada));
       
       System.out.println("termino el programa");
   
   }
}

Nota: Tuve un inconveniente "conceptual" cuando trataba de listar dentro de la clase principal. Es decir: cuando instanciaba mi
Código: [Seleccionar]
ListaCantantesFamosos lista
y luego quería recorrerla no lo podía hacer y me arrojaba el siguiente error:

"for-each not applicable to expression type.
 required: array or java.lang.iterable; found: ListaCantantesFamosos"

Note que "mi" clase no era una lista, sino que uno de sus atributos (campos) era una lista y de ahi venia el problema, por eso definí, el método listarCantantes() dentro de la clase y ahí pude usar el "for" ya que estaba haciendo referencia al atributo ListaCantantesFamosos.

Digo esto por si alguien se encontró con el mismo problema, tal vez pueda ayudar!

Gracias a todos, ya que con sus ejemplos y comentarios me han ayudado mucho cuando me encontraba atorado con los ejercicios!!!

Saludos!

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