Anda di halaman 1dari 20

//programa que muestra el nombre y el sueldo del empleado que más gana

import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//creamos los arrays
String[] empleados = new String[20];
double[] sueldos = new double[20];

//variables donde guardar el nombre y sueldo del empleado que más gana
String nombreMayor;
double mayorSueldo;

int i = 0;

//se lee el primer empleado


System.out.println("Lectura de nombres y sueldos de empleados: ");
System.out.print("Empleado " + (i + 1) + ": ");
empleados[i] = sc.nextLine();
System.out.print("Sueldo: ");
sueldos[i] = sc.nextDouble();

//se toma el primero como mayor


mayorSueldo = sueldos[i];
nombreMayor = empleados[i];

//se leen el resto de empleados


for (i = 1; i < empleados.length; i++) {
sc.nextLine(); //limpiar el buffer
System.out.print("Empleado " + (i + 1) + ": ");
empleados[i] = sc.nextLine();
System.out.print("Sueldo: ");
sueldos[i] = sc.nextDouble();
//se compara el sueldo leído con el mayor
if (sueldos[i] > mayorSueldo) {
mayorSueldo = sueldos[i];
nombreMayor = empleados[i];
}
}

//mostrar resultados
System.out.println("Empleado con mayor sueldo: " + nombreMayor );
System.out.println("Sueldo: " + mayorSueldo);
}
}
----------------------------------------------------------------------------------------------------

String[] empleado = new String[20];


double[] sueldo = new double[20];
double aux=0;
int pos=0;

for (int i = 0; i < empleado.length; i++) {


empleado[i]=JOptionPane.showInputDialog("Nombre del empleado");
sueldo[i]=Double.parseDouble(JOptionPane.showInputDialog("Sueldo del empleado"));
if (sueldo[i]>aux) {
aux = sueldo[i];
pos = i;
}
}
System.out.println("El sueldo mayor es de "+empleado[pos]);
System.out.println("y gana "+sueldo[pos]);

import java.util.ArrayList;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {


//creamos el ArrayList que contendrá la altura de los alumnos
ArrayList<Double> altura = new ArrayList();
int N;
double media;
//obtenemos el número de alumnos de la clase
N = numeroAlumnos();
//leemos la altura de los N alumnos
leerAlturas(altura, N);
//calculamos la media
media = calcularMedia(altura);
//mostramos los resultados
mostrarResultados(altura, media);
}

//Método para pedir por teclado el número de alumnos de la clase


public static int numeroAlumnos() {
Scanner sc = new Scanner(System.in);
int n;
do {
System.out.print("Introduce número de alumnos: ");
n = sc.nextInt();
} while (n < 1);
return n;
}

//Este método recibe el ArrayList y el número de alumnos de la clase


//Pide por teclado la altura de todos los alumnos y las guarda en el ArrayList
public static void leerAlturas(ArrayList<Double> a, int n) {
Scanner sc = new Scanner(System.in);
int i;
double alto;
for (i = 1; i <= n; i++) {
do {
System.out.print("Alumno " + i + " altura: ");
alto = sc.nextDouble();
} while (alto <= 0);
a.add(alto); //añade la altura al final del ArrayList
}
}

//Este método recibe el ArrayList con todas las alturas


//calcula y devuelve la media
public static double calcularMedia(ArrayList<Double> a) {
double media = 0;
for (Double d : a) {
media = media + d;
}
return media / a.size();
}

//Muestra la altura de todos los alumnos, la media y calcula y muestra


//cuantos alumnos hay con altura superior a la media
//y cuántos con altura inferior
public static void mostrarResultados(ArrayList<Double> a, double media) {
int superior = 0, inferior = 0;
System.out.println("alturas introducidas: ");
System.out.println(a);
for (Double d : a) {
if (d > media)
superior++;
else if (d < media)
inferior++;
}
System.out.printf("Media: %.2f %n", media);
System.out.println("Hay " + superior + " alumnos más altos que la media");
System.out.println("Hay " + inferior + " alumnos más bajos que la media");
}
}

import java.util.*;
public class MediaDeLaClase {
public static void main(String[] args) {

Scanner sc = new Scanner(System.in);


int numAlum, i;
double suma = 0, media;

//Lectura del número de alumnos. Debe ser un valor positivo


do {
System.out.print("Número de alumnos de la clase: ");
numAlum = sc.nextInt();
} while (numAlum <= 0);

//se crea un array llamado notas de numAlumn elementos de tipo double


double[] notas = new double[numAlum];

// Entrada de datos. Se lee la nota de cada alummo y se guarda


// en cada elemento del array
for (i = 0; i < notas.length; i++) {
System.out.print("Alumno " + (i + 1) + " Nota final: ");
notas[i] = sc.nextDouble();
}

// Sumar todas las notas


for (i = 0; i < notas.length; i++) {
suma = suma + notas[i];
}

// Calcular la media
media = suma / notas.length;

// Mostrar la media
System.out.printf("Nota media del curso: %.2f %n", media);

// Mostrar los valores superiores a la media


System.out.println("Listado de notas superiores a la media: ");
for (i = 0; i < notas.length; i++) {
if (notas[i] > media) {
System.out.println("Alumno numero " + (i + 1)+ " Nota final: " + notas[i]);
}
}
}
}

2) Haz una clase llamada Persona que siga las siguientes condiciones:

 Sus atributos son: nombre, edad, DNI, sexo (H hombre, M mujer), peso y
altura. No queremos que se accedan directamente a ellos. Piensa que
modificador de acceso es el más adecuado, también su tipo. Si quieres
añadir algún atributo puedes hacerlo.

 Por defecto, todos los atributos menos el DNI serán valores por defecto
según su tipo (0 números, cadena vacía para String, etc.). Sexo sera
hombre por defecto, usa una constante para ello.

 Se implantaran varios constructores:

 Un constructor por defecto.


 Un constructor con el nombre, edad y sexo, el resto por defecto.


Un constructor con todos los atributos como parámetro.
 Los métodos que se implementaran son:
 calcularIMC(): calculara si la persona esta en su peso ideal (peso en
kg/(altura^2 en m)), si esta fórmula devuelve un valor menor que 20, la
función devuelve un -1, si devuelve un número entre 20 y 25 (incluidos),
significa que esta por debajo de su peso ideal la función devuelve un 0 y
si devuelve un valor mayor que 25 significa que tiene sobrepeso, la
función devuelve un 1. Te recomiendo que uses constantes para devolver
estos valores.
 esMayorDeEdad(): indica si es mayor de edad, devuelve un booleano.

 comprobarSexo(char sexo): comprueba que el sexo introducido es


correcto. Si no es correcto, sera H. No sera visible al exterior.

 toString(): devuelve toda la información del objeto.

 generaDNI(): genera un número aleatorio de 8 cifras, genera a partir


de este su número su letra correspondiente. Este método sera
invocado cuando se construya el objeto. Puedes dividir el método para
que te sea más fácil. No será visible al exterior.


Métodos set de cada parámetro, excepto de DNI.
Ahora, crea una clase ejecutable que haga lo siguiente:

 Pide por teclado el nombre, la edad, sexo, peso y altura.

 Crea 3 objetos de la clase anterior, el primer objeto obtendrá las anteriores


variables pedidas por teclado, el segundo objeto obtendrá todos los
anteriores menos el peso y la altura y el último por defecto, para este último
utiliza los métodos set para darle a los atributos un valor.

 Para cada objeto, deberá comprobar si esta en su peso ideal, tiene


sobrepeso o por debajo de su peso ideal con un mensaje.

 Indicar para cada objeto si es mayor de edad.

 Por último, mostrar la información de cada objeto.


Puedes usar métodos en la clase ejecutable, para que os sea mas fácil.
/**
* Clase Persona
* Contiene información de una persona
* @author DiscoDurodeRoer
*/
public class Persona {

//Constantes
/**
* Sexo por defecto
*/
private final static char SEXO_DEF = 'H';

/**
* El peso de la persona esta por debajo del peso ideal
*/
public static final int INFRAPESO = -1;

/**
* El peso de la persona esta en su peso ideal
*/
public static final int PESO_IDEAL = 0;

/**
* El peso de la persona esta por encima del peso ideal
*/
public static final int SOBREPESO = 1;

//Atributos
/**
* Nombre de la persona
*/
private String nombre;

/**
* Edad de la persona
*/
private int edad;

/**
* DNI de la persona, se genera al construir el objeto
*/
private String DNI;

/**
* Sexo de la persona, H hombre M mujer
*/
private char sexo;

/**
* Peso de la persona
*/
private double peso;

/**
* Altura de la persona
*/
private double altura;
//Contructores
/**
* Constructor por defecto
*/
public Persona() {
this("", 0, SEXO_DEF, 0, 0);
}

/**
* Constructor con 3 parametroe
*
* @param nombre de la persona
* @param edad de la persona
* @param sexo de la persona
*/
public Persona(String nombre, int edad, char sexo) {
this(nombre, edad, sexo, 0, 0);
}

/**
* Constructor con 5 parametros
*
* @param nombre de la persona
* @param edad de la persona
* @param sexo de la persona
* @param peso de la persona
* @param altura de la persona
*/
public Persona(String nombre, int edad, char sexo, double peso,
double altura) {
this.nombre = nombre;
this.edad = edad;
this.peso = peso;
this.altura = altura;
generarDni();
this.sexo = sexo;
comprobarSexo();
}

//Métodos privados
private void comprobarSexo() {

//Si el sexo no es una H o una M, por defecto es H


if (sexo != 'H' && sexo != 'M') {
this.sexo = SEXO_DEF;
}
}

private void generarDni() {


final int divisor = 23;

//Generamos un número de 8 digitos


int numDNI = ((int) Math.floor(Math.random() * (100000000 -
10000000) + 10000000));
int res = numDNI - (numDNI / divisor * divisor);

//Calculamos la letra del DNI


char letraDNI = generaLetraDNI(res);

//Pasamos el DNI a String


DNI = Integer.toString(numDNI) + letraDNI;
}

private char generaLetraDNI(int res) {


char letras[] = {'T', 'R', 'W', 'A', 'G', 'M', 'Y',
'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z',
'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E'};

return letras[res];
}

//Métodos publicos
/**
* Modifica el nombre de la persona
*
* @param nombre a cambiar
*/
public void setNombre(String nombre) {
this.nombre = nombre;
}

/**
* Modifica la edad de la persona
*
* @param edad a cambiar
*/
public void setEdad(int edad) {
this.edad = edad;
}

/**
* Modifica el sexo de la persona, comprueba que es correcto
*
* @param sexo a cambiar
*/
public void setSexo(char sexo) {
this.sexo = sexo;
}

/**
* Modifica el peso de la persona
*
* @param peso a cambiar
*/
public void setPeso(double peso) {
this.peso = peso;
}

/**
* Modifica la altura de la persona
*
* @param altura a cambiar
*/
public void setAltura(double altura) {
this.altura = altura;
}

/**
* Calcula el indice de masa corporal
*
* @return codigo numerico
* <ul><li>-1: la persona esta por debajo de su peso ideal</li>
* <li>0: la persona esta en su peso ideal</li>
* <li>1: la persona esta por encima de su peso ideal</li></ul>
*/
public int calcularIMC() {
//Calculamos el peso de la persona
double pesoActual = peso / (Math.pow(altura, 2));
//Segun el peso, devuelve un codigo
if (pesoActual >= 20 && pesoActual <= 25) {
return PESO_IDEAL;
} else if (pesoActual < 20) {
return INFRAPESO;
} else {
return SOBREPESO;
}
}

/**
* Indica si la persona es mayor de edad
*
* @return true si es mayor de edad y false es menor de edad
*/
public boolean esMayorDeEdad() {
boolean mayor = false;
if (edad >= 18) {
mayor = true;
}
return mayor;
}

/**
* Devuelve informacion del objeto
*
* @return cadena con toda la informacion
*/
@Override
public String toString() {
String sexo;
if (this.sexo == 'H') {
sexo = "hombre";
} else {
sexo = "mujer";
}
return "Informacion de la persona:n"
+ "Nombre: " + nombre + "n"
+ "Sexo: " + sexo + "n"
+ "Edad: " + edad + " añosn"
+ "DNI: " + DNI + "n"
+ "Peso: " + peso + " kgn"
+ "Altura: " + altura + " metrosn";
}

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.
//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() {
}

//Constructor con un parámetro


public Empleado(String nif) {
this.nif = nif;
}

//Métodos get/set
public char getCasado() {
return casado;
}

public void setCasado(char casado) {


this.casado = casado;
}

public int getHorasExtras() {


return horasExtras;
}

public void setHorasExtras(int horasExtras) {


this.horasExtras = horasExtras;
}

public String getNif() {


return nif;
}

public void setNif(String nif) {


this.nif = nif;
}

public String getNombre() {


return nombre;
}

public void setNombre(String nombre) {


this.nombre = nombre;
}
public int getNumeroHijos() {
return numeroHijos;
}

public void setNumeroHijos(int numeroHijos) {


this.numeroHijos = numeroHijos;
}

public double getSueldoBase() {


return sueldoBase;
}

public void setSueldoBase(double sueldoBase) {


this.sueldoBase = sueldoBase;
}

public double getTipoIRPF() {


return tipoIRPF;
}

public void setTipoIRPF(double tipoIRPF) {


this.tipoIRPF = tipoIRPF;
}

//métodos get/set para el atributo static


public static double getPagoPorHoraExtra() {
return pagoPorHoraExtra;
}

public static void setPagoPorHoraExtra(double pagoPorHoraExtra) {


Empleado.pagoPorHoraExtra = pagoPorHoraExtra;
}

//calcular el importe de las horas extra


public double calcularImporteHorasExtras(){
return horasExtras * pagoPorHoraExtra;
}

//calcular el sueldo bruto


public double calcularSueldoBruto(){
return sueldoBase + calcularImporteHorasExtras();
}

//calcular el importe de las retencion por IRPF


public double calcularRetencionIrpf(){
double tipo = tipoIRPF;
if(casado == 's' || casado == 'S') {
tipo = tipo - 2; //2 puntos menos si está casado
}
tipo = tipo - numeroHijos; //un punto menos por cada hijo
if(tipo<0){
tipo = 0;
}
return calcularSueldoBruto() * tipo / 100;
}

//calcular el importe liquido a cobrar


public double calcularSueldo(){
return calcularSueldoBruto() - calcularRetencionIrpf();
}

//mostrar los datos de un trabajador


@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("\nNif: ");
sb.append(nif);
sb.append("\nSueldo Base: ");
sb.append(sueldoBase);
sb.append("\nHoras Extras: ");
sb.append(horasExtras);
sb.append("\ntipo IRPF: ");
sb.append(tipoIRPF);
sb.append("\nCasado: ");
sb.append(casado);
sb.append("\nNúmero de Hijos: ");
sb.append(numeroHijos);
return sb.toString();
}
}//Fin de la Clase Empleado

//Clase Principal
import java.io.IOException;
import java.util.Scanner;

public class ProyectoEmpleados {

final static int MAXIMO_EMPLEADOS = 20;


static Empleado[] empleados = new Empleado[MAXIMO_EMPLEADOS];
static int indice = 0;
static Scanner sc = new Scanner(System.in);

public static void main(String[] args) throws IOException {

double importe;
Empleado e;
leerEmpleados();
if (numeroDeEmpleados() > 0) {

//mostrar empleados
System.out.println("\n\nEmpleados introducidos: ");
mostrar();

importe = leerImporteHorasExtras();

//asignar el atributo estático pagoPorHoraExtra


Empleado.setPagoPorHoraExtra(importe);

//calcular el empleado que más cobra


e = empleadoQueMasCobra();
System.out.println("\n\nEmpleado que más cobra:");
System.out.println(e);
System.out.printf("Sueldo: %.2f € %n", e.calcularSueldo());

//calcular el empleado que menos cobra


e = empleadoQueMenosCobra();
System.out.println("\n\nEmpleado que menos cobra:");
System.out.println(e);
System.out.printf("Sueldo: %.2f € %n", e.calcularSueldo());

//calcular el empleado que más cobra por horas extra


e = empleadoQueMasCobraPorHorasExtras();
System.out.println("\n\nEmpleado que más cobra por horas extras:");
System.out.println(e);
System.out.printf("Total horas extras: %.2f €" ,
e.calcularImporteHorasExtras());

//calcular el empleado que menos cobra por horas extra


e = empleadoQueMenosCobraPorHorasExtras();
System.out.println("\n\nEmpleado que menos cobra por horas extras:");
System.out.println(e);
System.out.printf("Total horas extras: %.2f €" ,
e.calcularImporteHorasExtras());

//ordenar por salario de menor a mayor


ordenarPorSalario();
System.out.println("\n\nEmpleados ordenados por salario:");
mostrarEmpleadosYSalarios();

}
}

//método para leer todos los empleados y guardarlos en el array


public static void leerEmpleados() throws IOException {
Empleado e;
String dni, nombre;
double sueldoBase;
int horasExtras;
double tipoIRPF;
char casado; // S ó N
int numeroHijos;
int i, N;

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 = new Empleado(dni); //crear una nueva instancia de empleado

e.setNombre(nombre);
e.setSueldoBase(sueldoBase);
e.setHorasExtras(horasExtras);
e.setTipoIRPF(tipoIRPF);
e.setCasado(Character.toUpperCase(casado));
e.setNumeroHijos(numeroHijos);

empleados[indice] = e; //se añade el empleado al array


indice++;
}
}

//método para mostrar todos los empleados


public static void mostrar() {
for (int i = 0; i < indice; i++) {
System.out.println(empleados[i]);
}
}

//método para pedir el importe de la hora extra


public static double leerImporteHorasExtras() {
double importe;
System.out.print("Introduce el importe a pagar por cada hora extra: ");
importe = sc.nextDouble();
return importe;
}

//método que devuelve el número total de empleados


public static int numeroDeEmpleados() {
return indice;
}

//método que devuelve el empleado que más cobra


public static Empleado empleadoQueMasCobra() {
Empleado mayor = empleados[0];
for (int i = 1; i < indice; i++) {
if (empleados[i].calcularSueldo() > mayor.calcularSueldo()) {
mayor = empleados[i];
}
}
return mayor;
}

//método que devuelve el empleado que menos cobra


public static Empleado empleadoQueMenosCobra() {
Empleado menor = empleados[0];
for (int i = 1; i < indice; i++) {
if (empleados[i].calcularSueldo() < menor.calcularSueldo()) {
menor = empleados[i];
}
}
return menor;
}

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

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.

//Clase Fecha Java


public class Fecha {

private int dia;


private int mes;
private int año;

//Constructor por defecto


public Fecha() {
}
//Constructor con parámetros
public Fecha(int dia, int mes, int año) {
this.dia = dia;
this.mes = mes;
this.año = año;
}

//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;
}

//Método para comprobar si la fecha es correcta


public boolean fechaCorrecta() {
boolean diaCorrecto, mesCorrecto, añoCorrecto;
añoCorrecto = año > 0;
mesCorrecto = mes >= 1 && mes <= 12;
switch (mes) {
case 2:
if (esBisiesto()) {
diaCorrecto = dia >= 1 && dia <= 29;
} else {
diaCorrecto = dia >= 1 && dia <= 28;
}
break;
case 4:
case 6:
case 9:
case 11:
diaCorrecto = dia >= 1 && dia <= 30;
break;
default:
diaCorrecto = dia >= 1 && dia <= 31;
}
return diaCorrecto && mesCorrecto && añoCorrecto;
}

//Método privado para comprobar si el año es bisiesto


//Este método lo utiliza el método fechaCorrecta
private boolean esBisiesto() {
return (año % 4 == 0 && año % 100 != 0 || año % 400 == 0);
}

//Método que modifica la fecha cambiándola por la del día siguiente


public void diaSiguiente() {
dia++;
if (!fechaCorrecta()) {
dia = 1;
mes++;
if (!fechaCorrecta()) {
mes = 1;
año++;
}

}
}

//Método toString para mostrar la fecha


@Override
public String toString() {
StringBuilder sb = new StringBuilder();
if (dia < 10) {
sb.append("0");
}
sb.append(dia);
sb.append("-");
if (mes < 10) {
sb.append("0");
}
sb.append(mes);
sb.append("-");
sb.append(año);
return sb.toString();
}
} //Fin de la clase Fecha

public class ProyectoFecha {

public static void main(String[] args) {


Scanner sc = new Scanner(System.in);
int d, m, a;

//Se pide por teclado el dia, mes y año


System.out.println("Introduce fecha: ");
System.out.print("dia: ");
d = sc.nextInt();
System.out.print("mes: ");
m = sc.nextInt();
System.out.print("año: ");
a = sc.nextInt();
//Se crea un objeto Fecha utilizando el consructor con parámetros
Fecha fecha = new Fecha(d,m,a);

if (fecha.fechaCorrecta()) { //si la fecha es correcta

//Se muestra utilizando el método toString()


System.out.println("Fecha introducida: " + fecha);

//Se muestran los 10 días siguientes utilizando el método diaSiguiente()


System.out.println("Los 10 días siguientes son:");
for (int i = 1; i <= 10; i++) {
fecha.diaSiguiente();
System.out.println(fecha);
}

} else { //Si la fecha no es correcta


System.out.println("Fecha no valida");
}
}
}

Ejemplo de ejecución del programa:

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

Anda mungkin juga menyukai