Ejercicios Java
Ejercicios Java
Escribe un programa Java que realice lo siguiente: declarar una variable N de tipo int, una variable A de tipo double y una variable C de tipo char y asigna a cada una un
valor. A continuación muestra por pantalla:
El valor de cada variable.
La suma de N + A
La diferencia de A - N
El valor numérico correspondiente al carácter que contiene la variable C.
Si por ejemplo le hemos dado a N el valor 5, a A el valor 4.56 y a C el valor ‘a’, se debe mostrar por pantalla:
Variable N = 5
Variable A = 4.56
Variable C = a
5 + 4.56 = 9.559999999999999
4.56 - 5 = -0.4400000000000004
Valor numérico del carácter a = 97
/*
* Solución Ejercicio Básico Inicial 1
*/
package bi1;
2.Escribe un programa Java que realice lo siguiente: declarar dos variables X e Y de tipo int, dos variables N y M de tipo double y asigna a cada una un valor. A continuación
muestra por pantalla:
El valor de cada variable.
La suma X + Y
La diferencia X – Y
El producto X * Y
El cociente X / Y
El resto X % Y
La suma N + M
La diferencia N – M
El producto N * M
El cociente N / M
El resto N % M
La suma X + N
El cociente Y / M
El resto Y % M
El doble de cada variable
La suma de todas las variables
El producto de todas las variables
Si por ejemplo le hemos dado a X el valor 1, a Y el valor 2, a M el valor 3.2 y a N el valor 4.7 se debe mostrar por pantalla:
Variable X = 1
Variable Y = 2
Variable M = 3.2
Variable N = 4.7
1+2=3
1 - 2 = -1
1*2=2
1/2=0
1%2=1
4.7 + 3.2 = 7.9
4.7 - 3.2 = 1.5
4.7 * 3.2 = 15.040000000000001
4.7 / 3.2 = 1.46875
4.7 % 3.2 = 1.5
1 + 4.7 = 5.7
2 / 3.2 = 0.625
2 % 3.2 = 2.0
Variable X = 1 el doble es 2
Variable Y = 2 el doble es 4
Variable M = 3.2 el doble es 6.4
Variable N = 4.7 el doble es 9.4
1 + 2 + 4.7 + 3.2 = 10.9
1 * 2 * 4.7 * 3.2 = 30.080000000000002
/*
* Solución Ejercicio Básico Inicial 2
*/
package bi2;
3.Escribe un programa Java que declare una variable entera N y asígnale un valor. A continuación escribe las instrucciones que realicen los siguientes:
Incrementar N en 77.
Decrementarla en 3.
Duplicar su valor.
Si por ejemplo N = 1 la salida del programa será:
Valor inicial de N = 1
N + 77 = 78
N - 3 = 75
N * 2 = 150
/*
* Solución Ejercicio Básico Inicial 3
*/
package bi3;
public class Main {
public static void main(String[] args) {
int N = 1;
System.out.println("Valor inicial de N = " + N);
N+=77;
System.out.println("N + 77 = " + N);
N-=3;
System.out.println("N - 3 = " + N);
N*=2;
System.out.println("N * 2 = " + N);
}
}
4.Programa java que declare cuatro variables enteras A, B, C y D y asígnale un valor a cada una. A continuación realiza las instrucciones necesarias para que:
B tome el valor de C
C tome el valor de A
A tome el valor de D
D tome el valor de B
Si por ejemplo A = 1, B = 2, C = 3 y D = 4 el programa debe mostrar:
Valores iniciales
A=1
B=2
C=3
D=4
Valores finales
B toma el valor de C -> B = 3
C toma el valor de A -> C = 1
A toma el valor de D -> A = 4
D toma el valor de B -> D = 2
/*
* Solución Ejercicio Básico Inicial 4
*/
package bi6;
public class Main {
public static void main(String[] args) {
int A = 1, B = 2, C = 3, D = 4, AUX;
System.out.println("Valores iniciales");
System.out.println("A = " + A);
System.out.println("B = " + B);
System.out.println("C = " + C);
System.out.println("D = " + D);
AUX = B;
B = C;
C = A;
A = D;
D = AUX;
System.out.println("Valores finales");
System.out.println("B toma el valor de C -> B = " + B);
System.out.println("C toma el valor de A -> C = " + C);
System.out.println("A toma el valor de D -> A = " + A);
System.out.println("D toma el valor de B -> D = " + D);
}
}
En esta entrada vamos a ver tres ejemplos de utilización del operador condicional ? :
Se trata de usar el operador condicional en lugar de la instrucción condicional if para mostrar por pantalla un mensaje u otro dependiendo de una condición.
5.Escribe un programa java que declare una variable A de tipo entero y asígnale un valor. A continuación muestra un mensaje indicando si A es par o impar. Utiliza el
operador condicional ( ? : ) dentro del println para resolverlo.
Si por ejemplo A = 14 la salida será
14 es par
Si fuese por ejemplo A = 15 la salida será:
15 es impar
/*
* Solución Ejercicio Básico Inicial 5
*/
package bi7;
public class Main {
public static void main(String[] args) {
int A = 15;
System.out.println(A + (A%2==0 ? " es par " : " es impar "));
}
}
6.Escribe un programa java que declare una variable B de tipo entero y asígnale un valor. A continuación muestra un mensaje indicando si el valor de B es positivo o
negativo. Consideraremos el 0 como positivo. Utiliza el operador condicional ( ? : ) dentro del println para resolverlo.
Si por ejemplo B = 1 la salida será
1 es positivo
Si fuese por ejemplo B = -1 la salida será:
-1 es negativo
/*
* Solución Ejercicio Básico Inicial 6
*/
package bi6;
public class Main {
public static void main(String[] args) {
int B = -1;
System.out.println(B + (B >= 0 ? " es positivo " : " es negativo "));
}
}
7.Escribe un programa java que declare una variable C de tipo entero y asígnale un valor. A continuación muestra un mensaje indicando si el valor de C es positivo o
negativo, si es par o impar, si es múltiplo de 5, si es múltiplo de 10 y si es mayor o menor que 100. Consideraremos el 0 como positivo. Utiliza el operador condicional ( ? : )
dentro del println para resolverlo.
Si por ejemplo C = 55 la salida será
55 es positivo
55 es impar
55 es múltiplo de 5
55 no es múltiplo de 10
55 es menor que 100
/*
* Solución Ejercicio Básico Inicial 7
*/
package bi7;
public class Main {
public static void main(String[] args) {
int C = 55;
System.out.println(C + (C >= 0 ? " es positivo " : " es negativo "));
System.out.println(C + (C%2== 0 ? " es par " : " es impar "));
System.out.println(C + (C%5== 0 ? " es múltiplo de 5 " : " no es múltiplo de 5 "));
System.out.println(C + (C%10== 0 ? " es múltiplo de 10 " : " no es múltiplo de 10 "));
System.out.println(C + (C>100 ? " es mayor que 100 " : " es menor que 100 "));
}
}
8. Programa Java que lea un número entero por teclado y calcule si es par o impar.
Podemos saber si un número es par si el resto de dividir el número entre 2 es igual a cero. En caso contrario el número es impar
El operador Java que calcula el resto de la división entre dos números enteros o no es el operador %
El programa que calcula si un número entero es par o impar es el siguiente:
import java.util.*;
public class Condicional1_1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N;
System.out.print("Introduzca Número entero: ");
N = sc.nextInt();
if(N%2==0)
System.out.println("Par");
else
System.out.println("Impar");
}
}
10. Programa que lea un carácter por teclado y compruebe si es una letra mayúscula
/* condicional1_3
* Programa que lea un carácter por teclado y compruebe si es una letra mayúscula
*/
import java.io.*;
import java.util.*;
public class condicional1_3 {
public static void main(String[] args) throws IOException{
Scanner sc = new Scanner(System.in);
char car, car1;
System.out.print("Introduzca un carácter: ");
car = (char)System.in.read(); //lee un solo caracter
if(Character.isUpperCase(car)) //utilizamos el método isUpperCase de la clase Character
System.out.println("Es una letra mayúscula");
else
System.out.println("No es una letra mayúscula");
}
Forma alternativa de comprobar si un carácter es una letra mayúscula sin utilizar el método isUpperCase, en este caso comparando directamente con los caracteres A y Z
if(car>='A' && car <='Z')
System.out.println("Es una letra mayúscula");
else
System.out.println("No es una letra mayúscula");
La otra solución es directa y consiste en comprobar si el carácter que se ha leído por teclado es mayor o igual que el carácter 0 y menor o igual que el carácter 9.
/*
* Programa que lee tres números distintos
* y nos dice cuál de ellos es el mayor
*/
import java.util.*;
public class MayorDeTres {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n1, n2, n3;
System.out.print("Introduzca primer número: ");
n1 = sc.nextInt();
System.out.print("Introduzca segundo número: ");
n2 = sc.nextInt();
System.out.print("Introduzca tercer número: ");
n3 = sc.nextInt();
if(n1 > n2)
if(n1>n3)
System.out.println("El mayor es: " + n1);
else
System.out.println("el mayor es: " + n3);
else if(n2>n3)
System.out.println("el mayor es: " + n2);
else
System.out.println("el mayor es: " + n3);
}
}
14.Programa que lea por teclado tres números enteros H, M, S correspondientes a hora, minutos y segundos respectivamente, y comprueba si la hora que indican es una hora válida.
Supondremos que se leemos una hora en modo 24 Horas, es decir, el valor válido para las horas será mayor o igual que cero y menor que 24.
El valor válido para los minutos y segundos estará comprendido entre 0 y 59 ambos incluidos
/*
* Programa java que lea tres números enteros H, M, S que contienen hora, minutos y
* segundos respectivamente, y comprueba si la hora que indican es una hora válida.
*/
import java.util.*;
public class condicional1_16 {
public static void main(String[] args) {
int H,M,S;
Scanner sc = new Scanner(System.in);
System.out.print("Introduzca hora: ");
H = sc.nextInt();
System.out.print("Introduzca minutos: ");
M = sc.nextInt();
System.out.print("Introduzca segundos: ");
S = sc.nextInt();
if(H>=0 && H<24 && M>=0 && M<60 && S>=0 && S<60)
System.out.println("Hora correcta");
else
System.out.println("Hora incorrecta");
}
}
La instrucción que comprueba si la hora leída por teclado es correcta es:
if(H>=0 && H<24 && M>=0 && M<60 && S>=0 && S<60)
Esta condición da como resultado true cuando la hora es mayor o igual a 0 y menor que 24, los minutos son mayores o iguales a 0 y menores que 60 y los segundos son mayores 0
iguales a cero y menores a 60.
15.Programa que lea una variable entera mes y compruebe si el valor corresponde a un mes de 30 días, de 31 o de 28. Supondremos que febrero tiene 28 días. Se mostrará además el
nombre del mes. Se debe comprobar que el valor introducido esté comprendido entre 1 y 12.
/*
* Programa java que lea una variable entera mes y compruebe si el valor corresponde
* a un mes de 30 días. Se debe comprobar que el valor introducido esté
* comprendido entre 1 y 12
*/
import java.util.*;
public class condicional1_17 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int mes;
System.out.print("Introduzca número de mes: ");
mes = sc.nextInt();
if(mes < 1 || mes > 12) //se comprueba que el valor del mes es correcto
System.out.println("Mes incorrecto");
else{ //si el mes es correcto
switch(mes){ //se muestra el nombre mediante una instrucción switch
case 1: System.out.print("Enero");
break;
case 2: System.out.print("Febrero");
break;
case 3: System.out.print("Marzo");
break;
case 4: System.out.print("Abril");
break;
case 5: System.out.print("Mayo");
break;
case 6: System.out.print("Junio");
break;
case 7: System.out.print("Julio");
break;
case 8: System.out.print("Agosto");
break;
case 9: System.out.print("Septiembre");
break;
case 10: System.out.print("Octubre");
break;
case 11: System.out.print("Noviembre");
break;
case 12: System.out.print("Diciembre");
break;
}
// mostrar si es un mes de 30, 31 0 28 días
if(mes == 4 || mes == 6 || mes == 9 || mes == 11)
System.out.println(" es un mes de 30 días");
else if(mes == 2)
System.out.println(" es un mes de 28 días");
else
System.out.println(" es un mes de 31 días");
}
}
}
16.Ejemplo de uso de while: Programa Java que muestre los números del 1 al 100 utilizando la instrucción while.
/*
* Ejercicios básicos java con estructura iterativa o repetitiva
* Mostrar los números del 1 al 100
* utilizando un bucle while
*/
public class Main {
public static void main(String[] args) {
System.out.println("Numeros del 1 al 100: ");
int i=1;
while(i<=100) {
System.out.println(i);
i++;
}
}
}
17.Ejemplo de uso de do-while. Programa Java que muestre los números del 1 al 100 utilizando la instrucción do..while.
/*
* Ejercicios básicos java con estructura iterativa o repetitiva
* Mostrar los números del 1 al 100 utilizando un bucle do while
*/
public class Main {
public static void main(String[] args) {
int i = 1;
System.out.println("Numeros del 1 al 100: ");
do{
System.out.println(i);
i++;
}while(i<=100);
}
}
18.Ejemplo de uso de for. Programa Java que muestre los números del 1 al 100 utilizando la instrucción for.
/*
* Ejercicios básicos java con estructura iterativa o repetitiva
* Mostrar los números del 1 al 100 utilizando un bucle for
*/
public class Repetitiva1_3 {
public static void main(String[] args) {
System.out.println("Numeros del 1 al 100: ");
for(int i = 1; i<=100;i++)
System.out.println(i);
}
}
19.Ejemplo de uso de while. Programa Java que muestre los números del 100 al 1 utilizando la instrucción while.
/*
* Ejercicios básicos java con estructura iterativa o repetitiva
* Mostrar los números del 100 al 1 utilizando un bucle while
*/
public class Main {
public static void main(String[] args) {
System.out.println("Numeros del 100 al 1: ");
int i=100;
while(i>=1)
{
System.out.println(i);
i--;
}
}
}
20.Ejemplo de uso de do-while. Programa Java que muestre los números del 100 al 1 utilizando la instrucción do..while.
/*
* Ejercicios básicos java con estructura iterativa o repetitiva
* Mostrar los números del 100 al 1 utilizando un bucle do while
*/
public class Main {
public static void main(String[] args) {
int i = 100;
System.out.println("Numeros del 100 al 1: ");
do{
System.out.println(i);
i--;
}while(i>=1);
}
}
21.Ejemplo de for. Programa Java que muestre los números del 100 al 1 utilizando la instrucción for.
/*
* Ejercicios básicos java con estructura iterativa o repetitiva
* Mostrar los números del 100 al 1 utilizando un bucle for
*/
public class Repetitiva1_6 {
public static void main(String[] args) {
System.out.println("Numeros del 100 al 1: ");
for(int i=100;i>=1;i--)
System.out.println(i);
}
}
22.Escribe una clase Cuenta para representar una cuenta bancaria. Los datos de la cuenta son: nombre del cliente (String), número de cuenta (String), tipo de interés (double) y saldo
(double).
System.out.print("Nombre : ");
nombre = sc.nextLine();
System.out.print("Número de cuenta : ");
numero = sc.nextLine();
System.out.print("Tipo de interes : ");
tipo = sc.nextDouble();
System.out.print("Saldo: ");
importe = sc.nextDouble();
cuenta1.setNombre(nombre);
cuenta1.setNumeroCuenta(numero);
cuenta1.setTipoInteres(tipo);
cuenta1.setSaldo(importe);
//se crea el objeto cuenta2 con los valores leidos por teclado
//se ejecuta el constructor con parámetros
Cuenta cuenta2 = new Cuenta("Juan Ferrández Rubio", "12345678901234567890", 1.75, 300);
//Clase Cuenta
public class Cuenta {
//Constructor copia
public Cuenta(final Cuenta c) {
nombre = c.nombre;
numeroCuenta = c.numeroCuenta;
tipoInteres = c.tipoInteres;
saldo = c.saldo;
}
//getters y setters
public void setNombre(String s) {
nombre = s;
}
//método ingreso
public boolean ingreso(double n) {
boolean ingresoCorrecto = true;
if (n < 0) {
ingresoCorrecto = false;
} else {
saldo = saldo + n;
}
return ingresoCorrecto;
}
//método reintegro
public boolean reintegro(double n) {
boolean reintegroCorrecto = true;
if (n < 0) {
reintegroCorrecto = false;
} else if (saldo >= n) {
saldo -= n;
} else {
reintegroCorrecto = false;
}
return reintegroCorrecto;
}
//método transferencia
public boolean transferencia(Cuenta c, double n) {
boolean correcto = true;
if (n < 0) {
correcto = false;
} else if (saldo >= n) {
reintegro(n);
c.ingreso(n);
} else {
correcto = false;
}
return correcto;
}
}
Crea una clase llamada Contador que contenga un único atributo entero llamado cont.
La clase tendrá los siguientes constructores:
Constructor por defecto
Constructor con parámetros para inicializar el contador con un valor no negativo. Si el valor inicial que se recibe es negativo el contador tomará el valor cero como valor inicial.
Constructor copia.
Además de los métodos getter y setter, la clase contendrá los métodos:
incrementar: incrementa el contador en una unidad.
decrementar: decrementa el contador en una unidad. El contador nunca podrá tener un valor negativo. Si al decrementar se alcanza un valor negativo el contador toma el valor cero.
Una vez creada la clase, escribe un método main para probar la clase.
Solución:
//constructor copia
public Contador(final Contador c) {
cont = c.cont;
}
//getter
public int getCont() {
return cont;
}
//setter
public void setCont(int cont) {
if (cont < 0) {
this.cont = 0;
} else {
this.cont = cont;
}
}
//getters y setters
public String getAutor() {
return autor;
}
//se realiza otro préstamo de libro1. En este caso no se podrá realizar ya que
//solo hay un ejemplar de este libro y ya está prestado. Se mostrará por
//pantalla el mensaje No quedan ejemplares del libro…
if (libro1.prestamo()) {
System.out.println("Se ha prestado el libro " + libro1.getTitulo());
} else {
System.out.println("No quedan ejemplares del libro " + libro1.getTitulo() + " para prestar");
}
//mostrar los datos del objeto libro1
System.out.println("Libro 1:");
System.out.println("Titulo: " + libro1.getTitulo());
System.out.println("Autor: " + libro1.getAutor());
System.out.println("Ejemplares: " + libro1.getEjemplares());
System.out.println("Prestados: " + libro1.getPrestados());
System.out.println();
public Fraccion() {
this.num = 0;
this.den = 1;
}
//sumar fracciones
public Fraccion sumar(Fraccion f) {
Fraccion aux = new Fraccion();
aux.num = this.num * f.den + this.den * f.num;
aux.den = this.den * f.den;
aux.simplificar(); //se simplifica antes de devolverla
return aux;
}
//restar fracciones
public Fraccion restar(Fraccion f) {
Fraccion aux = new Fraccion();
aux.num = this.num * f.den - this.den * f.num;
aux.den = this.den * f.den;
aux.simplificar(); //se simplifica antes de devolverla
return aux;
}
//multiplicar fracciones
public Fraccion multiplicar(Fraccion f) {
Fraccion aux = new Fraccion();
aux.num = this.num * f.num;
aux.den = this.den * f.den;
aux.simplificar(); //se simplifica antes de devolverla
return aux;
}
//dividir fracciones
public Fraccion dividir(Fraccion f) {
Fraccion aux = new Fraccion();
aux.num = this.num * f.den;
aux.den = this.den * f.num;
aux.simplificar(); //se simplifica antes de devolverla
return aux;
}
//Cálculo del máximo común divisor por el algoritmo de Euclides
private int mcd() {
int u = Math.abs(num); //valor absoluto del numerador
int v = Math.abs(den); //valor absoluto del denominador
if (v == 0) {
return u;
}
int r;
while (v != 0) {
r = u % v;
u = v;
v = r;
}
return u;
}
@Override
public String toString() {
simplificar();
return num + "/" + den;
}
} //Fin de la clase Fraccion
Crear una Clase Fecha en Java. La clase tendrá tres atributos privados dia, mes y año de tipo int. La clase contendrá los siguientes métodos:
Constructor por defecto.
Constructor con tres parámetros para crear objetos con valores iniciales.
Métodos set y get para asignar y obtener los valores de los atributos de la clase.
Método fechaCorrecta() que comprueba si la fecha es correcta. Devuelve un valor de tipo boolean indicando si la fecha es correcta o no. Este método a su vez utilizará un método
privado de la clase llamado esBisiesto que calcula si el año es o no bisiesto. El método esBisiesto devuelve true si el año es bisiesto y false si no lo es.
Método diaSiguiente() que cambia la fecha actual por la del día siguiente. El objeto de la clase Fecha al que se le aplique este método deberá quedar siempre en un estado consistente,
es decir, la nueva fecha deberá ser correcta.
Modificar el método toString() heredado de Object para mostrar las fechas de la forma dd-mm-aaaa. El día y el mes se deben mostrar con dos cifras. Si el dia o el mes tienen solo una
cifra se escribirá un cero delante. Por ejemplo si la fecha es dia=1, mes=6, año= 2015 la fecha que se mostrará será: 01-06-2015
Escribe un programa para probar la clase Fecha. El método diaSiguiete() pruébalo dentro de un bucle que imprima la fecha durante cada iteración del bucle.
Solución:
//Clase Fecha Java
public class Fecha {
//setters y getters
public void setDia(int d) {
dia = d;
}
public void setMes(int m) {
mes = m;
}
public void setAño(int a) {
año = a;
}
public int getDia() {
return dia;
}
public int getMes() {
return mes;
}
public int getAño() {
return año;
}
}
}
Introduce fecha:
dia: 28
mes: 12
año: 2015
Fecha introducida: 28-12-2015
Los 10 días siguientes son:
29-12-2015
30-12-2015
31-12-2015
01-01-2016
02-01-2016
03-01-2016
04-01-2016
05-01-2016
06-01-2016
07-01-2016
Crea una clase Empleado que tenga los siguientes atributos privados:
Nif.
Nombre.
Sueldo base.
Horas extra realizadas en el mes.
Tipo de IRPF (%).
Casado o no.
Número de hijos.
Importe de la hora extra. Este será un atributo static o atributo de clase.
Los objetos Empleado se podrán crear con un constructor por defecto o con un constructor con un solo parámetro correspondiente al DNI.
Además de los métodos getter/setter la clase Empleado tendrá estos métodos:
Método para el cálculo del complemento correspondiente a las horas extra realizadas.
Método para calcular el sueldo bruto (sueldo base + complemento por horas extras)
Método para calcular las retenciones por IRPF. El porcentaje de IRPF se aplica sobre el sueldo bruto, teniendo en cuenta que el porcentaje que hay que aplicar es el tipo menos 2
puntos si el empleado está casado y menos 1 punto adicional por cada hijo que tenga.
Método toString() para mostrar los datos de los empleados de la siguiente forma:
12345678A Lucas Guerrero Arjona
Sueldo Base: 1150.0
Horas Extras: 4
tipo IRPF: 15.0
Casado: S
Número de Hijos: 2
Una vez creada la clase Empleado, la utilizaremos en un programa que lea empleados y los guarde en un array estático. El número total de empleados se pide por teclado. El número
máximo de empleados es de 20.
Después de leer los datos de los empleados se pedirá que se introduzca el importe correspondiente al pago por hora extra asignándoselo al atributo estático de la clase.
A continuación el programa mostrará:
- El empleado que más cobra y el que menos
- El empleado que cobra más por horas extra y el que menos.
- Todos los empleados ordenados por salario de menor a mayor.
Solución:
//Clase Empleado
public class Empleado {
private static double pagoPorHoraExtra; //atributo de clase
private String nif;
private String nombre;
private double sueldoBase;
private int horasExtras;
private double tipoIRPF;
private char casado; //S ó N
private int numeroHijos;
//Constructor por defecto
public Empleado() {
}
//Métodos get/set
public char getCasado() {
return casado;
}
double importe;
Empleado e;
leerEmpleados();
if (numeroDeEmpleados() > 0) {
//mostrar empleados
System.out.println("\n\nEmpleados introducidos: ");
mostrar();
importe = leerImporteHorasExtras();
}
}
do {
System.out.print("Número de empleados? ");
N = sc.nextInt();
} while (N < 0 || N > MAXIMO_EMPLEADOS);
for (i = 1; i <= N; i++) {
sc.nextLine(); //limpiar el intro
System.out.println("Empleado " + i);
System.out.print("Nif: ");
dni = sc.nextLine();
System.out.print("Nombre: ");
nombre = sc.nextLine();
System.out.print("Sueldo Base: ");
sueldoBase = sc.nextDouble();
System.out.print("Horas extra: ");
horasExtras = sc.nextInt();
System.out.print("Tipo de IRPF: ");
tipoIRPF = sc.nextDouble();
System.out.print("Casado (S/N): ");
casado = (char) System.in.read();
System.out.print("Número de hijos: ");
numeroHijos = sc.nextInt();
e.setNombre(nombre);
e.setSueldoBase(sueldoBase);
e.setHorasExtras(horasExtras);
e.setTipoIRPF(tipoIRPF);
e.setCasado(Character.toUpperCase(casado));
e.setNumeroHijos(numeroHijos);
//método que devuelve el empleado que más cobra por horas extra
public static Empleado empleadoQueMasCobraPorHorasExtras() {
Empleado mayor = empleados[0];
for (int i = 1; i < indice; i++) {
if (empleados[i].calcularImporteHorasExtras() > mayor.calcularImporteHorasExtras()) {
mayor = empleados[i];
}
}
return mayor;
}
//método que devuelve el empleado que menos cobra por horas extra
public static Empleado empleadoQueMenosCobraPorHorasExtras() {
Empleado menor = empleados[0];
for (int i = 1; i < indice; i++) {
if (empleados[i].calcularImporteHorasExtras() < menor.calcularImporteHorasExtras()) {
menor = empleados[i];
}
}
return menor;
}
//método para ordenar todos los empleados por su salario de menor a mayor
public static void ordenarPorSalario() {
int i, j;
Empleado aux;
for (i = 0; i < indice - 1; i++) {
for (j = 0; j < indice - i - 1; j++) {
if (empleados[j + 1].calcularSueldo() < empleados[j].calcularSueldo()) {
aux = empleados[j + 1];
empleados[j + 1] = empleados[j];
empleados[j] = aux;
}
}
}
}
//método para mostrar los datos de cada empleado junto con su sueldo
public static void mostrarEmpleadosYSalarios() {
for (int i = 0; i < indice; i++) {
System.out.println(empleados[i]);
System.out.printf("Sueldo: %.2f € %n" , empleados[i].calcularSueldo());
}
}
}//Fin de la Clase Principal
Crea una clase Persona con los siguientes atributos: nombre, dirección, códigoPostal, ciudad y fechaNacimiento.
El atributo fechaNacimiento es un objeto de la clase Fecha creada en esta entrada.
Las clases Persona y Fecha tienen por tanto una relación de composición.
A la clase Fecha que ya tenemos le añadiremos un método boolean esMayorQue(Fecha f) que nos será útil en este ejercicio. Este método devuelve true si la fecha que contiene el
objeto es mayor que la fecha que recibe como parámetro y false en caso contrario.
La clase Persona contendrá los siguientes métodos:
Constructor
Métodos get y set
Método boolean esMayorDeEdad() que devuelve true si la persona es mayor de edad y false en caso contrario. Para sabre si la persona es mayor de edad se comparará la fecha de
nacimiento con la fecha actual obtenida del sistema.
Método toString() que muestre los datos de la siguiente forma:
///////////////////////////////////////////////////////////////////////////////////////////
//Clase Fecha
///////////////////////////////////////////////////////////////////////////////////////////
public class Fecha {
}
}
sb.append(año);
return sb.toString();
}
} //Final de la Clase Fecha
///////////////////////////////////////////////////////////////////////////////////////////
//Clase Persona
///////////////////////////////////////////////////////////////////////////////////////////
import java.util.Calendar;
//Método para mostrar los datos de las personas según el formato pedido
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("Nombre: ");
sb.append(nombre);
sb.append("\nFecha de Nacimiento: ");
sb.append(fechaNacimiento);
sb.append("\nDireccion: ");
sb.append(direccion);
sb.append("\n");
sb.append(codigoPostal);
sb.append("\n");
sb.append(ciudad);
sb.append("\n");
return sb.toString();
}
///////////////////////////////////////////////////////////////////////////////////////////
//Clase Principal
///////////////////////////////////////////////////////////////////////////////////////////
import java.util.ArrayList;
import java.util.Scanner;
//Método que lee los datos de cada persona y las añade al ArrayList
public static void leerPersonas() {
do {
System.out.print("Número de personas? ");
N = sc.nextInt();
} while (N < 0);
sc.nextLine(); //limpiar el buffer de entrada
sc.nextLine();
System.out.print("Dirección: ");
direccion = sc.nextLine();
System.out.print("Codigo Postal: ");
codigoPostal = sc.nextInt();
sc.nextLine();
System.out.print("Ciudad: ");
ciudad = sc.nextLine();