1
Aprender a programar desde cero / Re:Ejemplo iterator api java con ArrayList Ejercicio CU00667B del tutorial
« en: 13 de Mayo 2015, 22:29 »
Mucha Gracias Alex Rodríguez y Lorenzo31 por las correcciones
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.
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).
class CantanteFamoso {
private String nombre;
private String discoConMasVentas;
public CantanteFamoso() {
this.nombre = "";
this.discoConMasVentas = "";
}
public CantanteFamoso(String nombre, String discoConMasVentas) {
this.nombre = nombre;
this.discoConMasVentas = discoConMasVentas;
}
/**
* @return the nombre
*/
public String getNombre() {
return nombre;
}
/**
* @param nombre the nombre to set
*/
public void setNombre(String nombre) {
this.nombre = nombre;
}
/**
* @return the discoConMasVentas
*/
public String getDiscoConMasVentas() {
return discoConMasVentas;
}
/**
* @param discoConMasVentas the discoConMasVentas to set
*/
public void setDiscoConMasVentas(String discoConMasVentas) {
this.discoConMasVentas = discoConMasVentas;
}
}
public class ListaCantantesFamosos {
private ArrayList<CantanteFamoso>listaCantantesFamosos;
public ListaCantantesFamosos() {
this.listaCantantesFamosos = new <CantanteFamoso>ArrayList();
}
//método que permita añadir objetos de tipo CantanteFamoso a la lista
public void añadirCantantesFamosos(){
CantanteFamoso ca=new CantanteFamoso();
listaCantantesFamosos.add(ca);
}
public void listarCantantesFamosos(){
CantanteFamoso c;
Iterator<CantanteFamoso>it=listaCantantesFamosos.iterator();
while (it.hasNext()) {
c = it.next();
System.out.println("Cantante: "+ c.getNombre());
System.out.println("Disco con más ventas:"+c.getDiscoConMasVentas());
}
}
/**
* @return the listaCantantesFamosos
*/
public ArrayList<CantanteFamoso> getListaCantantesFamosos() {
return listaCantantesFamosos;
}
/**
* @param listaCantantesFamosos the listaCantantesFamosos to set
*/
public void setListaCantantesFamosos(ArrayList<CantanteFamoso> listaCantantesFamosos) {
this.listaCantantesFamosos = listaCantantesFamosos;
}
public void setCantanteFamoso(CantanteFamoso Cantante){
listaCantantesFamosos.add(Cantante);
}
}
import java.util.Scanner;
/**
*
* @author don_h_000
*/
public class EntradaTeclado {
private String entradaTeclado;
public EntradaTeclado() {
Scanner sc= new Scanner(System.in);
this.entradaTeclado = sc.nextLine();
}
/**
* @return the entradaTeclado
*/
public String getEntradaTeclado() {
return entradaTeclado;
}
/**
* @param entradaTeclado the entradaTeclado to set
*/
public void setEntradaTeclado(String entradaTeclado) {
this.entradaTeclado = entradaTeclado;
}
}
import java.util.Scanner;
/**
*
* @author don_h_000
*/
public class test {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
ListaCantantesFamosos listaDeCantantes1=new ListaCantantesFamosos();
String opcion=new String();
Scanner sc =new Scanner(System.in);
char continuar;
do{
//char continuar;
System.out.println("Por favor introduzca los datos de otro cantante.");
System.out.println("Nombre :");
EntradaTeclado entradaTeclado1=new EntradaTeclado();
System.out.println("Disco con más ventas: :");
EntradaTeclado entradaTeclado2=new EntradaTeclado();
CantanteFamoso cantante=new CantanteFamoso();
cantante.setNombre(entradaTeclado1.getEntradaTeclado());
cantante.setDiscoConMasVentas(entradaTeclado2.getEntradaTeclado());
listaDeCantantes1.añadirCantantesFamosos();
listaDeCantantes1.setCantanteFamoso(cantante);
System.out.println("La lista actualizada contiene los siguientes datos:");
listaDeCantantes1.listarCantantesFamosos();
System.out.println("¿Desea introducir los datos de otro cantante (s/n)?");
opcion=sc.nextLine();
continuar = opcion.charAt(0);
}while(continuar=='s' || continuar=='S');
}
}
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).
import java.util.ArrayList;
class ListaCantantesFamosos {
private ArrayList<String> listaDeCantantes;
public ListaCantantesFamosos() {
this.listaDeCantantes = new ArrayList<String>();
listaDeCantantes.add("Mark King");
listaDeCantantes.add("Mike Lindup");
listaDeCantantes.add("Nathan King");
}
public ArrayList<String> getListaDeCantantes() {
return listaDeCantantes;
}
public void añadirCantante(String nombreCantante){
listaDeCantantes.add(nombreCantante);
}
public void listarCantantes(){
int i=0;
for (String nombre:listaDeCantantes) {
System.out.println("Cantante "+(i+1)+": "+nombre);
i++;
}
}
public void setListaDeCantantes(ArrayList<String> listaDeCantantes) {
this.listaDeCantantes = listaDeCantantes;
}
}
class EntradaTeclado {
private String entrada;
public EntradaTeclado() {
this.entrada = "";
Scanner sc = new Scanner(System.in);
this.entrada= sc.nextLine();
}
public String getEntrada() {
return entrada;
}
public void setEntrada(String entrada) {
this.entrada = entrada;
}
public class Test {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
ListaCantantesFamosos listaDeCantantes = new ListaCantantesFamosos();
listaDeCantantes.listarCantantes();
String continuar = new String();
Scanner sc = new Scanner(System.in);
do {
System.out.println("Ingrese el Nombre del Cantante. ");
EntradaTeclado entradaTeclado = new EntradaTeclado();
listaDeCantantes.añadirCantante(entradaTeclado.getEntrada());
listaDeCantantes.listarCantantes();
System.out.println("Añadir nuevo Cantante (S/N)");
continuar=sc.nextLine();
}while(continuar.equalsIgnoreCase("s"));
}
}
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.
import java.util.ArrayList;
import java.util.Scanner;
class ListaCantantesFamosos {
private ArrayList<String>cantantes;
private String nombreCantante;
public ListaCantantesFamosos(ArrayList<String> cantantes, String nombreCantante) {
this.cantantes = cantantes;
this.nombreCantante = nombreCantante;
}
public ListaCantantesFamosos() {
this.cantantes = new ArrayList<String>();
cantantes.add("Ellie Goulding");
cantantes.add("Don Henley");
cantantes.add("Zella Day");
}
public void dameCantantesFamosos(){
Scanner sc = new Scanner(System.in);
nombreCantante = sc.nextLine();
}
public void addNombre(String valor_nombre){
cantantes.add(valor_nombre);
}
public void listarCantantesFamosos(){
for (int i = 0; i < cantantes.size(); i++) {
System.out.println("Cantante Famoso "+(i+1)+" : "+cantantes.get(i));
}
}
public ArrayList<String> getCantantes() {
return cantantes;
}
public void setCantantes(ArrayList<String> cantantes) {
this.cantantes = cantantes;
}
public String getNombreCantante() {
return nombreCantante;
}
public void setNombreCantante(String nombreCantante) {
this.nombreCantante = nombreCantante;
}
}
public class test {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
ListaCantantesFamosos listaCantantes1 = new ListaCantantesFamosos();
System.out.println("Por favor introduzca nombre del 4to Cantante :");
listaCantantes1.dameCantantesFamosos();
listaCantantes1.addNombre(listaCantantes1.getNombreCantante());
System.out.println("Por favor introduzca nombre del 5to Cantante :");
listaCantantes1.dameCantantesFamosos();
listaCantantes1.addNombre(listaCantantes1.getNombreCantante());
//listando cantantes famosos
listaCantantes1.listarCantantesFamosos();
}
}
¿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)?Es de tipo mixto porque retorna un objeto y modifica como un procedimiento
public static void main(String[] args) {
String p1,p2;
Scanner sc = new Scanner(System.in);
System.out.print("Ingrese la 1era Palabra .");p1 = sc.next();
System.out.print("Ingrese la 2da Palabra .");p2 = sc.next();
int mayor,menor,aux;
if (p1.length() > p2.length()) {
mayor=p1.length();
menor=p2.length();
aux = 2;
}
else
{
mayor=p2.length();
menor=p1.length();
aux = 1;
}
for (int i = 0; i < mayor; i++) {
System.out.print("¿ Letra "+(i+1)+" igual en las dos palabras ? ");
if (i<menor)
System.out.println(" "+p1.substring(i, i+1).equals(p2.substring(i, i+1)));
else
System.out.println(" La palabra " + aux + " no tiene letra " + i);
}
}
y si es necesario inicializar string "" e int a 0 ?
Crea una clase en cuyo método main ejecutes una comparación letra a letra usando equals de dos palabras usando bucles. Por ejemplo si las palabras son “avispa” y “ave” el programa debe dar como resultado: ¿Letra 1 igual en las dos palabras? True. ¿Letra 2 igual en las dos palabras? True ¿Letra 3 igual en las dos palabras? False ¿Letra 4 igual en las dos palabras? La palabra 2 no tiene letra 4 ¿Letra 5 igual en las dos palabras? La palabra 2 no tiene letra 5 ¿Letra 6 igual en las dos palabras? La palabra 2 no tiene letra 6.
class entradaTexto {
private String textoIngresado;
//constructor
public entradaTexto(String textoIngresado) {
this.textoIngresado = textoIngresado;
}
//constructor por defecto
public entradaTexto() {
this.textoIngresado="";
obtenerTexto();
}
//setters
public String getTextoIngresado() {
return textoIngresado;
}
//getters
public void setTextoIngresado(String textoIngresado) {
this.textoIngresado = textoIngresado;
}
public void obtenerTexto(){
Scanner sc = new Scanner(System.in);
String textoIngresado = sc.next();
}
}
public static void main(String[] args) {
System.out.println ("Por favor introduzca la entrada 1:");
entradaTexto texto1 = new entradaTexto();
System.out.println(texto1.getTextoIngresado());
System.out.println ("Por favor introduzca la entrada 2:");
entradaTexto texto2 = new entradaTexto();
System.out.println(texto2.getTextoIngresado());
int n;
String texto_1= texto1.getTextoIngresado();
System.out.println ("texto_1 : "+ texto_1); // aqui no me imprime el texto_1 porque en la linea anterior no lo asigna
String texto_2= texto2.getTextoIngresado();
boolean comparacion ;
if (texto_1.length() > texto_2.length()) {
n = texto_1.length();
}
else
{ n = texto_2.length();}
for (int i = 0; i < n; i++) {
System.out.println("Letra "+(i+1)+" igual en las dos palabras");
if (texto_1.substring(i, i+1).equals(texto_2.substring(i, i+1))) {
comparacion = true;
System.out.println( comparacion);
}
else
{comparacion = false;
System.out.println( comparacion);}
}
}
La palabra 2 no tiene letra 4
class EntradaDeTeclado {
private String entradaTeclado;
public EntradaDeTeclado() {
this.entradaTeclado = "";
pedirEntrada();
}
private void pedirEntrada() {
Scanner sc = new Scanner(System.in);
entradaTeclado = sc.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(" ")) {
return entradaTeclado.substring(0, i+1);
}
}
return entradaTeclado;
}
public int getLongitud(){
return entradaTeclado.length();
}
}
public void setEntradaTeclado(String entradaTeclado) {
this.entradaTeclado = entradaTeclado;
public EntradaDeTeclado(String entradaTeclado) {
this.entradaTeclado = entradaTeclado;
}
y si el constructor y el set que falta no seria necesario para ese ejemplo, no se de una manera general deberíamos ponerlos o no...
Crea una clase con un método main que pida una entrada de teclado y usando un bucle while, el método length de la clase String y el método substring de la clase String, muestre cada una de las letras que componen la entrada. Por ejemplo si se introduce “ave” debe mostrar:
Letra 1: a
Letra 2: v
Letra 3: e
public class BucleWhile {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
System.out.println("Ingrese la palabra : ");
Scanner sc = new Scanner(System.in);
String cadena = "";
cadena=sc.nextLine();
int i=0;
while(i<cadena.length()){
System.out.println("Letra "+(i+1)+": "+cadena.substring(i, i+1));
i++;
}
}
}
Crea una clase con un método main que pida una entrada de teclado y usando un bucle for, el método length de la clase String y el método substring de la clase String, muestre cada una de las letras que componen la entrada. Por ejemplo si se introduce “ave” debe mostrar:
Letra 1: a
Letra 2: v
Letra 3: e
public static void main(String[] args) {
System.out.println ("Por favor introduzca una cadena por teclado:");
Scanner sc = new Scanner(System.in);
String cadena="";
cadena=sc.nextLine(); //que diferencia hay sc.next();
for (int i = 0; i < cadena.length(); i++) {
System.out.println("Letra "+(i+1)+": "+cadena.substring(i, i+1));
}
}
public class MainScanner {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println ("Por favor introduzca una cadena por teclado:");
String en = "";
Scanner sc = new Scanner(System.in);
en = sc.nextLine();
String letraInicial=en.substring(0,1);
System.out.println(letraInicial);
if (en.length()<5 ) {
if (letraInicial.equals("a") || letraInicial.equals("A")) {
System.out.println("La cadena introducida tiene menos de 5 caracteres y comienza por la letra a");
}
else{
System.out.println("La cadena introducida tiene menos de 5 caracteres y no comienza por la letra a");
}
}
else {
if (en.length()<16 ) {
if (letraInicial.equals("a") || letraInicial.equals("A")) {
System.out.println("La cadena introducida tiene entre 5 y 15 caracteres y comienza por la letra a");
}
else{
System.out.println("La cadena introducida tiene entre 5 y 15 caracteres y no comienza por la letra a");
}
}
else {
if (letraInicial.equals("a") || letraInicial.equals("A")) {
System.out.println("La cadena introducida tiene mas 15 caracteres y comienza por la letra a");
}
else{
System.out.println("La cadena introducida tiene mas 15 caracteres y no comienza por la letra a");
}
}
}
}
}
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”.
import java.util.Scanner;
public class MainScanner {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println ("Por favor introduzca una cadena por teclado:");
String en = "";
Scanner sc = new Scanner(System.in);
en = sc.nextLine();
String letraInicial=en.substring(0,1);
System.out.println(letraInicial);
if (en.length()<5 ) {
if (letraInicial.equals("a")) { //No funciona if (letraInicial=="a") porque ?
System.out.println("La cadena introducida tiene menos de 5 caracteres y comienza por la letra a");
}
else{
System.out.println("La cadena introducida tiene menos de 5 caracteres y no comienza por la letra a");
}
}
else {
if (en.length()<16 ) {
if (letraInicial.equals("a")) {
System.out.println("La cadena introducida tiene entre 5 y 15 caracteres y comienza por la letra a");
}
else{
System.out.println("La cadena introducida tiene entre 5 y 15 caracteres y no comienza por la letra a");
}
}
else {
if (letraInicial.equals("a")) {
System.out.println("La cadena introducida tiene mas 15 caracteres y comienza por la letra a");
}
else{
System.out.println("La cadena introducida tiene mas 15 caracteres y no comienza por la letra a");
}
}
}
}
}
Crea una clase (ponle el nombre que quieras) que carezca de atributos y cuyo constructor esté vacío. En dicha clase debe existir un método tipo función que reciba 3 cadenas de texto y devuelva la cadena de texto combinación de: las dos primeras letras de la primera cadena, seguidas por un espacio en blanco, seguidas de las cuatro primeras letras de la segunda cadena, seguidas de un guión medio y seguido de las 6 primeras letras de la tercera cadena. Puedes comprobar si es correcta tu solución consultando en los foros aprenderaprogramar.com.
public class Cadena {
public Cadena() {
}
public String devuelveCadena(String a, String b, String c) {
return (a.substring(0, 2)+" "+b.substring(0, 4)+"-"+c.substring(0, 6));
}
}
public class JavaApplication8 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Cadena micadena = new Cadena();
System.out.println("resultado : "+micadena.devuelveCadena("pablito","clavo","calvito"));
}
}
Define tres clases: Casa, SalonCasa y CocinaCasa. La clase SalonCasa debe tener como atributos numeroDeTelevisores (int) y tipoSalon (String) y disponer de un constructor que los inicialice a 0 y “desconocido”. La clase CocinaCasa debe tener como atributos esIndependiente (boolean) y numeroDeFuegos (int) y un constructor que los inicialice a false y 0. La clase Casa tendrá los siguientes atributos de clase: superficie (double), direccion (String), salonCasa (tipo SalonCasa) y cocina (tipo CocinaCasa). Define un constructor para la clase Casa que establezca a unos valores de defecto los atributos simples y que cree nuevos objetos si se trata de atributos objeto. Define otro constructor que reciba como parámetros la superficie, dirección y un objeto de tipo SalonCasa y otro de tipo CocinaCasa. Compila el código para comprobar que no presenta errores, y crea un objeto de tipo Casa usando el constructor que recibe parámetros. Ten en cuenta que antes tendrás que haber creado los objetos de tipo SalonCasa y CocinaCasa para poder pasárselos al constructor. Comprueba que el objeto Casa se inicializa correctamente consultando el valor de sus atributos después de haber creado el objeto.
public class CocinaCasa {
private boolean esIndependiente;
private int numeroDeFuegos;
public CocinaCasa() {
esIndependiente = false;
numeroDeFuegos = 0;
}
public CocinaCasa(boolean esIndependiente, int numeroDeFuegos) {
this.esIndependiente = esIndependiente;
this.numeroDeFuegos = numeroDeFuegos;
}
public boolean isEsIndependiente() {
return esIndependiente;
}
public void setEsIndependiente(boolean esIndependiente) {
this.esIndependiente = esIndependiente;
}
public int getNumeroDeFuegos() {
return numeroDeFuegos;
}
public void setNumeroDeFuegos(int numeroDeFuegos) {
this.numeroDeFuegos = numeroDeFuegos;
}
}
public class SalonCasa {
private int numeroDeTelevisores;
private String tipoSalon;
public SalonCasa() {
numeroDeTelevisores = 0;
tipoSalon = "desconocido";
}
public SalonCasa(int numeroDeTelevisores, String tipoSalon) {
this.numeroDeTelevisores = numeroDeTelevisores;
this.tipoSalon = tipoSalon;
}
public int getNumeroDeTelevisores() {
return numeroDeTelevisores;
}
public void setNumeroDeTelevisores(int numeroDeTelevisores) {
this.numeroDeTelevisores = numeroDeTelevisores;
}
public String getTipoSalon() {
return tipoSalon;
}
public void setTipoSalon(String tipoSalon) {
this.tipoSalon = tipoSalon;
}
}
public class Casa {
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocina;
public Casa() {
superficie = 0.0;
direccion = "";
salonCasa = new SalonCasa();
cocina = new CocinaCasa();
}
public Casa(double superficie, String direccion, SalonCasa salonCasa, CocinaCasa cocina) {
this.superficie = superficie;
this.direccion = direccion;
this.salonCasa = salonCasa;
this.cocina = cocina;
}
public double getSuperficie() {
return superficie;
}
public void setSuperficie(double superficie) {
this.superficie = superficie;
}
public String getDireccion() {
return direccion;
}
public class JavaApplication5 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
SalonCasa salon1= new SalonCasa(5,"fiesta");
CocinaCasa cocina1= new CocinaCasa();
cocina1.setEsIndependiente(true);
cocina1.setNumeroDeFuegos(4);
Casa casita1 = new Casa(400.5,"La planicie",salon1,cocina1);
System.out.println("1ER SALON ");
System.out.println("1er salon de la Casa de tipo " + salon1.getTipoSalon() + " con "+ salon1.getNumeroDeTelevisores()+" televisores " );
System.out.println("");
System.out.println("1ERA COCINA ");
System.out.println("1era Cocina es independiente " + cocina1.isEsIndependiente() +
" con "+ cocina1.getNumeroDeFuegos()+" numeros de fuegos");
System.out.println("");
System.out.println("LA CASA ");
System.out.println("Con una superficie de "+ casita1.getSuperficie()+
"km2 ubicado en "+casita1.getDireccion()+
" con un salon de "+casita1.getSalonCasa().getTipoSalon()+
" y "+casita1.getSalonCasa().getNumeroDeTelevisores()+" televisores "+
"ademas de una cocina independiente "+casita1.getCocina().isEsIndependiente()+
" con "+casita1.getCocina().getNumeroDeFuegos()+" numeros de fuegos");
}
}
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