
Ejercicios resueltos utilizando Vector y Stack
1) Dada una lista de Personas cuyos atributos son: dni, apellidos, nombres, sexo, edad y peso. Hacer un programa que utilice Vector para registrar las personas, dado un dni reportar los datos de la persona, dado un dni eliminar la persona de la lista, ordenar a las personas por apellidos, y reportar todas las personas ingresadas.
import java.util.Objects;
public class Persona {
public String dni;
public String apellidos;
public String nombres;
public String sexo;
public int edad;
public double peso;
public Persona(){
}
public Persona(String dni){
this.dni = dni;
}
public Persona(String dni, String apellidos, String nombres,
String sexo, int edad, double peso){
this.dni = dni;
this.apellidos = apellidos;
this.nombres = nombres;
this.sexo = sexo;
this.edad = edad;
this.peso = peso;
}
public String getDni() {
return dni;
}
public void setDni(String dni) {
this.dni = dni;
}
public String getApellidos() {
return apellidos;
}
public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}
public String getNombres() {
return nombres;
}
public void setNombres(String nombres) {
this.nombres = nombres;
}
public String getSexo() {
return sexo;
}
public void setSexo(String sexo) {
this.sexo = sexo;
}
public int getEdad() {
return edad;
}
public void setEdad(int edad) {
this.edad = edad;
}
public double getPeso() {
return peso;
}
public void setPeso(double peso) {
this.peso = peso;
}
@Override
public String toString() {
return «Persona: » + «dni = » + dni + «, apellidos = » + apellidos + «, «
+ «nombres = » + nombres + «, sexo = » + sexo + «, edad = » + edad + «, peso = » + peso;
}
@Override
public int hashCode() {
int hash = 7;
hash = 11 * hash + Objects.hashCode(this.dni);
return hash;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Persona other = (Persona) obj;
if (!Objects.equals(this.dni, other.dni)) {
return false;
}
return true;
}
}
import java.util.*;
public class AplicacionVectorPersona {
private Vector<Persona> listaPersonas;
public static void main(String[] args) {
AplicacionVectorPersona aplicacionVectorPersona = new AplicacionVectorPersona();
aplicacionVectorPersona.listaPersonas = new Vector();
aplicacionVectorPersona.leerOpcion();
}
public void leerOpcion(){
Scanner entrada = new Scanner(System.in);
int opcion;
do{
System.out.println(«\nVector de Personas»);
System.out.println(«[1] Registrar persona»);
System.out.println(«[2] Buscar persona por dni»);
System.out.println(«[3] Eliminar persona»);
System.out.println(«[4] Ordenar personas por apellidos»);
System.out.println(«[5] Mostrar personas»);
System.out.println(«[6] Salir»);
System.out.print(«Ingresar opcion(1-6): «);
opcion = entrada.nextInt();
switch(opcion)
{
case 1:
registrarPersona();
break;
case 2:
buscarPersonaDNI();
break;
case 3:
eliminarPersona();
break;
case 4:
ordenarPersonaApellidos();
break;
case 5:
mostrarPersonas();
break;
}
}while(opcion!=6);
}
public void registrarPersona(){
String dni, apellidos, nombres, sexo, respuesta;
int edad;
double peso;
Scanner entrada = new Scanner(System.in);
int i=0;
do{
System.out.println(«\nPersona» + i);
System.out.print(«Ingresar dni: «);
dni = entrada.next();
System.out.print(«Ingresar apellidos: «);
apellidos = entrada.next();
entrada.nextLine();
System.out.print(«Ingresar nombres: «);
nombres = entrada.next();
entrada.nextLine();
System.out.print(«Ingresar sexo: «);
sexo = entrada.next();
entrada.nextLine();
System.out.print(«Ingresar edad: «);
edad = entrada.nextInt();
System.out.print(«Ingresar peso(Kg): «);
peso = entrada.nextDouble();
Persona persona = new Persona(dni,apellidos,nombres,sexo,edad,peso);
listaPersonas.addElement(persona);
System.out.print(«Desea ingresar nueva persona(S/N): «);
respuesta = entrada.next();
i++;
}while(respuesta.equals(«S»));
}
public void buscarPersonaDNI(){
String dni;
int indice;
Scanner entrada = new Scanner(System.in);
System.out.print(«Ingresar dni a buscar: «);
dni = entrada.next();
Persona persona = new Persona(dni);
indice = listaPersonas.indexOf(persona);
if(indice!=-1){
persona = listaPersonas.get(indice);
System.out.println(persona);
}
else
System.out.println(«La persona no se encuentra»);
}
public void eliminarPersona(){
String dni;
int indice;
Scanner entrada = new Scanner(System.in);
System.out.print(«Ingresar dni para eliminar: «);
dni = entrada.next();
Persona persona = new Persona(dni);
indice = listaPersonas.indexOf(persona);
if(indice!=-1){
persona = listaPersonas.remove(indice);
System.out.println(«Persona eliminada: » + persona);
}
else
System.out.println(«La persona no se encuentra»);
}
public void ordenarPersonaApellidos(){
Collections.sort(listaPersonas, (Persona persona1, Persona persona2)
-> persona1.getApellidos().compareTo(persona2.getApellidos()));
mostrarPersonas();
}
public void mostrarPersonas(){
if(!listaPersonas.isEmpty()){
System.out.println(«Vector de Personas: «);
for(Persona persona : listaPersonas)
System.out.println(persona);
}
else
System.out.println(«No existen personas en el vector»);
}
}
2) Dada una lista de Trabajadores cuyos atributos son: nombre, edad, sexo, estado civil y salario base. Hacer un programa que utilice Vector para registrar los trabajadores, reportar la cantidad de trabajadores del sexo masculino y reportar la cantidad de trabajadoras casadas. Además reportar la suma de todos los salarios y reportar todos los trabajadores ingresados.
import java.util.Objects;
public class Trabajador {
private String nombre;
private int edad;
private String sexo;
private String estadoCivil;
private double sueldo;
public Trabajador(){
}
public Trabajador(String nombre){
this.nombre = nombre;
}
public Trabajador(String nombre, int edad, String sexo,
String estadoCivil, double sueldo){
this.nombre = nombre;
this.edad = edad;
this.sexo = sexo;
this.estadoCivil = estadoCivil;
this.sueldo = sueldo;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public int getEdad() {
return edad;
}
public void setEdad(int edad) {
this.edad = edad;
}
public String getSexo() {
return sexo;
}
public void setSexo(String sexo) {
this.sexo = sexo;
}
public String getEstadoCivil() {
return estadoCivil;
}
public void setEstadoCivil(String estadoCivil) {
this.estadoCivil = estadoCivil;
}
public double getSueldo() {
return sueldo;
}
public void setSueldo(double sueldo) {
this.sueldo = sueldo;
}
@Override
public String toString() {
return «Trabajador: » + «nombre = » + nombre + «, edad = » + edad + «, sexo = » + sexo + «, «
+ «estado civil = » + estadoCivil + «, sueldo = » + sueldo;
}
@Override
public int hashCode() {
int hash = 3;
hash = 47 * hash + Objects.hashCode(this.nombre);
return hash;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Trabajador other = (Trabajador) obj;
if (!Objects.equals(this.nombre, other.nombre)) {
return false;
}
return true;
}
}
import java.util.*;
public class AplicacionVectorTrabajador {
private Vector<Trabajador> listaTrabajadores;
public static void main(String[] args) {
AplicacionVectorTrabajador aplicacionVectorTrabajador = new AplicacionVectorTrabajador();
aplicacionVectorTrabajador.listaTrabajadores = new Vector();
aplicacionVectorTrabajador.leerOpcion();
}
public void leerOpcion(){
Scanner entrada = new Scanner(System.in);
int opcion;
do{
System.out.println(«\nVector de Trabajadores»);
System.out.println(«[1] Registrar trabajador»);
System.out.println(«[2] Calcular cantidad de trabajadores masculinos»);
System.out.println(«[3] Calcular cantidad de trabajadoras casadas»);
System.out.println(«[4] Calcular suma de sueldos»);
System.out.println(«[5] Mostrar trabajadores»);
System.out.println(«[6] Salir\n»);
System.out.print(«Ingresar opcion(1-6): «);
opcion = entrada.nextInt();
switch(opcion)
{
case 1:
registrarTrabajador();
break;
case 2:
calcularCantidadMasculino();
break;
case 3:
calcularCantidadCasada();
break;
case 4:
calcularSumaSueldo();
break;
case 5:
mostrarTrabajadores();
break;
}
}while(opcion!=6);
}
public void registrarTrabajador(){
String nombre, sexo, estadoCivil, respuesta;
int edad;
double sueldo;
Scanner entrada = new Scanner(System.in);
int i=0;
do{
System.out.println(«\nTrabajador» + i);
System.out.print(«Ingresar nombre: «);
nombre = entrada.next();
entrada.nextLine();
System.out.print(«Ingresar edad: «);
edad = entrada.nextInt();
System.out.print(«Ingresar sexo: «);
sexo = entrada.next();
System.out.print(«Ingresar estado civil: «);
estadoCivil = entrada.next();
System.out.print(«Ingresar sueldo: «);
sueldo = entrada.nextDouble();
Trabajador trabajador = new Trabajador(nombre,edad,sexo,estadoCivil,sueldo);
listaTrabajadores.addElement(trabajador);
System.out.print(«Desea ingresar nuevo trabajador(S/N): «);
respuesta = entrada.next();
i++;
}while(respuesta.equals(«S»));
}
public void calcularCantidadMasculino(){
int contador=0;
Trabajador trabajador;
for(int i=0;i<listaTrabajadores.size();i++){
trabajador = listaTrabajadores.get(i);
if(trabajador.getSexo().equals(«Masculino») || trabajador.getSexo().equals(«masculino»)){
contador++;
System.out.println(contador);
}else
System.out.println(«No hay trabajadores del sexo masculino»);
}
}
public void calcularCantidadCasada(){
int contador=0;
Trabajador trabajador;
for(int i=0;i<listaTrabajadores.size();i++){
trabajador = listaTrabajadores.get(i);
if(trabajador.getEstadoCivil().equals(«Casada») || trabajador.getSexo().equals(«casada»)){
contador++;
System.out.println(contador);
}
else
System.out.println(«No hay trabajadoras casadas»);
}
}
public void calcularSumaSueldo(){
double suma=0;
Trabajador trabajador;
for(int i=0;i<listaTrabajadores.size();i++){
trabajador = listaTrabajadores.get(i);
suma = suma + trabajador.getSueldo();
}
System.out.println(«La suma total de los sueldos es: » +suma);
}
public void mostrarTrabajadores(){
if(!listaTrabajadores.isEmpty()){
System.out.println(«Vector de trbajadores: «);
for(Trabajador trabajador : listaTrabajadores)
System.out.println(trabajador);
}
else
System.out.println(«No hay trabajadores en la lista»);
}
}
3) Hacer un programa para ingresar un número entero y reportar si es un número capicúa. El programa deberá utilizar Pilas (Stack).
import java.util.*;
public class AplicacionPilaCapicua {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
Stack<Integer> pila = new Stack();
int numero, x;
boolean capicua = true;
System.out.print(«Ingresar numero: «);
numero = entrada.nextInt();
x = numero;
while(x>0){
pila.push(x%10);
x = x/10;
}
x = numero;
while(x>0){
if(x%10 != pila.pop())
capicua = false;
x = x/10;
}
if(capicua)
System.out.println(«Es un numero capicua»);
else
System.out.println(«No es un numero capicua»);
}
}