21
Aprender a programar desde cero / Re:Arrays o arreglos Java. Tipos de colecciones (CU00669B) ejercicio resuelto
« en: 19 de Julio 2015, 17:20 »
Muy clara tu explicación.
Gracias.
Saludos
Gracias.
Saludos
Ahora Aprender A Programar está en Facebook. Noticias, novedades y mucho más. Síguenos en Facebook
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.
1) Scanner miScanner;
2) System.out.println("\nIngresa un mes");
3) miScanner = new Scanner(System.in);
4) while (!miScanner.nextLine().equalsIgnoreCase(mesesAnio[mesSecreto])) {
5) System.out.println("Incorrecto, intenta de nuevo ingresando otro mes");
6) miScanner = new Scanner(System.in);
7) }
EJERCICIO
El API de Java proporciona herramientas para pedir datos al usuario a través de ventanas. Un ejemplo de ello es el uso de la clase JOptionPane perteneciente al paquete javax.swing.JOptionPane del API Java. El método showInputDialog permite pedir un dato al usuario y almacena su respuesta en un objeto de tipo String. Queremos crear un programa que pida al usuario un número y muestre por pantalla el doble de ese número. Para ello hemos creado este código:
import javax.swing.JOptionPane;
public class ejemplo1 {
public static void main (String[] Args) {
String entradaUsuario = JOptionPane.showInputDialog ( "Introduzca un número:" );
System.out.println ("El doble del número introducido es: " + 2*entradaUsuario);
}
}
El problema que tenemos es que nos salta un mensaje de error “operator * cannot be applied to int, java.lang.String”. ¿Qué interpretación haces de este mensaje de error? ¿Cómo se puede corregir el código para que a través de una conversión de tipos se ejecute el programa?
import javax.swing.JOptionPane;
public class EjemploValueOf {
public static void main (String[] Args) {
Integer miInteger = 0;
String entradaUsuario = JOptionPane.showInputDialog ( "Introduzca un número:" );
miInteger = miInteger.valueOf (entradaUsuario);
System.out.println ("El doble del número introducido es: " + 2*miInteger);
}
}
EJERCICIO
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.
import java.util.Scanner;
import java.util.Random;
public class Test {
public static void main (String[] args) {
System.out.println("Adivina el mes secreto");
pedirMes();
}
public static void pedirMes() {
String[] mesesAño = {"enero", "febrero", "marzo", "abril", "mayo", "junio",
"julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"};
Random numeroRandom = new Random();
int mesSecreto = numeroRandom.nextInt(12); //asignamos numero aleatorio a mesSecreto
Scanner miScanner;
System.out.println("\nIngresa un mes");
miScanner = new Scanner(System.in);
while (!miScanner.nextLine().equalsIgnoreCase(mesesAño[mesSecreto])) {
System.out.println("Incorrecto, intenta de nuevo ingresando otro mes");
miScanner = new Scanner(System.in);
}
System.out.println("Correcto!");
System.out.println("\nFin de programa");
}
}
public class Test {
PersonajeMaldito personajeM1, personajeM2, personajeM3; // Declaración de atributos
public Test (String uno, String dos, String tres) {
// inicialización atributos con objetos anónimos de tipo String y MaldadBipolar
personajeM1 = new PersonajeMaldito(uno, new MaldadBipolar(dos, tres));
personajeM2 = new PersonajeMaldito("Lady Westfalia", new MaldadBipolar("Destruye sueños", "Encierra miradas"));
personajeM3 = new PersonajeMaldito("Demon Wii", new MaldadBipolar("Corta senderos", "Tuerce destinos"));
// la clase PersonajeMaldito tiene dos atributos uno de tipo String y otro de tipo MaldadBipolar
// la clase MaldadBipolar tiene dos atributos de tipo String
}//cierre de claseEJERCICIO
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).
import java.util.Scanner;
public class EntradaDeTeclado {
private String entradaTeclado;
public EntradaDeTeclado () { //Constructor
entradaTeclado="";
pedirEntrada(); //Llamada al método interno.
} //Cierre del constructor
public void pedirEntrada () { //Método de la clase
Scanner entradaEscaner = new Scanner (System.in);
entradaTeclado = entradaEscaner.nextLine (); } //Cierre del método pedirEntrada
public String getEntrada () { return entradaTeclado; } //Cierre del método getEntrada
}
public class CantanteFamoso {
private String nombre;
private String discoConMasVentas;
public CantanteFamoso () { //constructor sin argumentos
nombre = "";
discoConMasVentas = "";
}
public CantanteFamoso (String nombre, String discoConMasVentas) { //constructor con argumentos
this.nombre = nombre;
this.discoConMasVentas = discoConMasVentas;
}
public void setCantante (String nombre) {
this.nombre = nombre;
}
public void setDisco (String discoConMasVentas) {
this.discoConMasVentas = discoConMasVentas;
}
public String getCantante () { return nombre; }
public String getDisco () { return discoConMasVentas; }
}
import java.util.Iterator;
import java.util.ArrayList;
public class ListaCantantesFamosos {
ArrayList<CantanteFamoso> listaCantantesFamosos;
public ListaCantantesFamosos () {
listaCantantesFamosos = new ArrayList <CantanteFamoso>();
}
public void addCantante (CantanteFamoso cantante) {
listaCantantesFamosos.add(cantante);
}
public void getLista () {
Iterator<CantanteFamoso> listaCantantes = listaCantantesFamosos.iterator();
CantanteFamoso tmp;
while (listaCantantes.hasNext()) {
tmp = listaCantantes.next();
System.out.println("Cantante: "+tmp.getCantante()+" - Disco mas vendido : "+tmp.getDisco());
}
}
}
public class Test {
static ListaCantantesFamosos lista;
public static void main (String[] args) {
lista = new ListaCantantesFamosos();
lista.addCantante(new CantanteFamoso ("Madonna","All I want is you"));
lista.addCantante(new CantanteFamoso ("Jorge Negrete","Jalisco"));
System.out.println("\nMostrando lista actual\n");
lista.getLista();
opcionCantante();
}
public static void opcionCantante () { //metodo que nos pregunta por mas cantantes
EntradaDeTeclado respuestaUsuario, nuevaEntrada;
CantanteFamoso cantante;
do {
System.out.println("\nDesea ingresar otro cantante? Y/N");
respuestaUsuario = new EntradaDeTeclado();
//if que contempla respuesta "Y", respuesta "N" o cualquier otra respuesta
if(respuestaUsuario.getEntrada().equalsIgnoreCase("y")) {
cantante = new CantanteFamoso();
System.out.println("\nIngresa un nuevo cantante");
nuevaEntrada = new EntradaDeTeclado();
cantante.setCantante(nuevaEntrada.getEntrada());
System.out.println("Ingresa el disco mas vendido de "+nuevaEntrada.getEntrada());
nuevaEntrada = new EntradaDeTeclado();
cantante.setDisco(nuevaEntrada.getEntrada());
lista.addCantante(cantante);
System.out.println("\nMostrando lista actualizada\n");
lista.getLista();
} else if (respuestaUsuario.getEntrada().equalsIgnoreCase("n")) {
} else System.out.println("Por favor ingresa Y o N");
} while (!respuestaUsuario.getEntrada().equalsIgnoreCase("n"));
System.out.println("\nMostrando lista final\n");
lista.getLista();
System.out.println("\nPrograma finalizado");
}
}
public class EntradaDeTeclado {
private String entradaTeclado;
public EntradaDeTeclado () { //Constructor
entradaTeclado="";
pedirEntrada(); //Llamada al método interno
} //Cierre del constructor
public class EntradaDeTeclado {
public EntradaDeTeclado () { //Constructor
private String entradaTeclado="";
pedirEntrada(); //Llamada al método interno
} //Cierre del constructor
import java.util.ArrayList;
public class ListaCantantesFamosos {
private ArrayList<String> listaCantantes;
//constructor que inicializa el objeto listaCantantes y agrega 3 cantantes(strings)
public ListaCantantesFamosos () {
listaCantantes = new ArrayList<String>();
listaCantantes.add("Bono"); listaCantantes.add("Freddie Mercury"); listaCantantes.add("Shakira");
}
//metodo para agregar otros strings
public void addCantante (String nombre) { listaCantantes.add(nombre); }
//metodo que devuelve todo el contenido del ArrayList listaCantantes
public void getListaCompleta () {
for (String nombre : listaCantantes) {
System.out.println("Cantante : "+nombre);
}
}
}
public class Test {
static ListaCantantesFamosos lista; //es estatico ya que lo vamos a inicializar y usar dentro del metodo main
public static void main (String[] args) {
lista = new ListaCantantesFamosos();
System.out.println("\nMostrando lista Actual\n");
lista.getListaCompleta();
cantanteOpcional();
}
static void cantanteOpcional() {
EntradaDeTeclado respuestaUsuario, ingresoCantante; //declaramos dos objetos de tipo EntradaDeTeclado
do {
System.out.println("\nDesea ingresar otro cantante? Y / N");
respuestaUsuario = new EntradaDeTeclado();
if (respuestaUsuario.getEntrada().equalsIgnoreCase("y")) {
System.out.println("\nIngrese otro cantante");
ingresoCantante = new EntradaDeTeclado();
//agregando el cantante ingresado al objeto lista
lista.addCantante(ingresoCantante.getEntrada());
System.out.println("Cantante agregado satisfactoriamente\n");
System.out.println("Mostrando lista actualizada\n");
lista.getListaCompleta();
}else if (respuestaUsuario.getEntrada().equalsIgnoreCase("n")) {
//aca respuestaUsuario.getEntrada() es igual a "n" entonces se repite el do por la condicion del while.
//por lo tanto este if lo dejo en blanco
} else { //si respuesta distinta de "y" o "n" repreguntamos
System.out.println("Por favor, ingrese Y o N");
respuestaUsuario.setEntrada("y");
/*cambiamos el valor por "y" para que se cumple la condición en el while siguiente
para ejecutar la sentencia del do nuevamente.
Para poder cambiar el valor de respuestaUsuario agregamos un metodo setEntrada en la
clase EntradaDeTeclado*/
}
}// fin de do
while (respuestaUsuario.getEntrada().equalsIgnoreCase("y"));
System.out.println("\nMostrando lista final\n");
lista.getListaCompleta();
System.out.println("\nPrograma terminado");
}
}
EJERCICIO
Responde a las siguientes preguntas.
1) ¿Se puede acceder a un objeto anónimo contenido en un ArrayList?
2) ¿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?
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