Código Java
import java.io.*;
import java.util.*;
public class Fecha{//Atributos de objeto
int d;
int m;
int a;
int s;
static int c; //atributo de Clase
public Fecha(){}; //Constructor vacio
public Fecha(int d,int m,int a){//Constructor con tres atributos de objeto y uno de Clase
this.d = d;
this.m = m;
this.a = a;
c++;
}
public Fecha(int d,int m,int a, int s){//Constructor con cuatro atributos de objeto y uno de Clase
this.d = d;
this.m = m;
this.a = a;
this.s = s;
c++;
}
public int getA(){return this.a;}//geters y seters
public int getM(){return this.m;}
public int getD(){return this.d;}
public void setA(int a){this.a=a;}
public void setM(int m){this.m=m;}
public void setD(int d){this.d=d;}
public boolean mayor(Fecha f){//método que compara fechas y ns dice si es mayor
if(this.a > f.getA())return true;
if(this.a== f.getA()&&this.m>f.getM())return true;
if(this.a == f.getA()&&this.m==f.getM()&&this.d>f.getD())return true;
else return false;
}
public boolean igual(Fecha f){ //método que compara fechas y nos dice si son iguales
if(this.a == f.getA()&&this.m==f.getM()&&this.d==f.getD())return true;
else return false;
}
public boolean menor(Fecha f){//método que compara fechas y ns dice si es menor
if(this.a < f.getA())return true;
if(this.a == f.getA()&&this.m=1582)&&(a%4==0&&a%100!=0)) || (a%400==0)|| (a%1000==0));devuelve = true;
if((a<=1582)&&(a%4==0));devuelve = true;
return devuelve;
}
public boolean correcta(){//método que nos dice si las fechas estan correctamente configuradas según meses, años bisiestos...
if((getA() <1582)&&(getM()<1||getM()>12) &&(getD()<1 ||getD()>31)) return false;
boolean correcta = false;
switch(getM()){
case 2: if(bisiesto(getA())) correcta = getD()<=29;
else correcta = getD()<=28;
break;
case 4:
case 6:
case 9:
case 11: correcta = getD()<=30;break;
default: correcta = true; break;
}
return correcta;
}
public static char lunaLlena(int c){ // método que nos dice cuando la luna está llena
int lLl=(int) Math.floor((c+6)%29.5);
char lL = (char)lLl;
if( lL =='\u0000') lL='1';
else lL =' ';
return lL;
}
String fichero = "fechaX.txt";//Phat del fichero
//NodoStringD sec = new NodoStringD(sx,sm);36160 al 16 de julio de 622. 227117;
public Fecha fecha(){//método que nos retorna una fecha tipo Fecha.
int b = 0; Fecha fx= null; String sx =null; c=0;
try{
PrintWriter pw = new PrintWriter(new File(fichero));
for(int a=1;a<=1581;a++){
for(int m=1;m<=12;m++){
if (a <1582&&bisiesto(a) && m==2)b=29;
if (a <1582&&bisiesto(a)==false && m==2) b=28;
if (a<1582 &&( m==4 || m==6||m==9||m==11))b=30;
if (a<1582 &&( m==1 || m==3||m==5||m==7||m==8||m==10||m==12))b=31;
for(int d=1;d<=b;d++){
fx = new Fecha(1,1,1);
int s=diaSemana();
int lc = lunaLlena(c);
sx=d+" "+m+" "+a+" \t "+s+" "+c+""+lunaLlena(c);
pw.println(sx);
}
}
}
/**Al jueves -juliano- 4 de octubre de 1582 le sucedió el viernes -gregoriano- 15 de octubre de 1582.
Así, diez días desaparecieron debido a que ya se habían contado de más en el calendario juliano.*/
for(int a=1582;a<=2500;a++){
for(int m=1;m<=12;m++){
if (a >=1582&&bisiesto(a) && m==2)b=29;
if (a >=1582&&bisiesto(a)==false && m==2) b=28;
if (a>=1582 &&( m==4 || m==6||m==9||m==11))b=30;
if (a>=1582 &&( m==1 || m==3||m==5||m==7||m==8||m==10||m==12))b=31;
for(int d=1;d<=b;d++){
fx = new Fecha(d,m,a);
Fecha fechaPascua = null;
int s= diaSemana();
if(a == 1582 && m == 10 && d == 5){
a = 1582; m = 10; d =15;}
sx=d+" "+m+" "+a+" \t "+s+" "+c;
pw.println(sx);
}
}
}
pw.close();
}catch (FileNotFoundException e){System.err.println("Problemas al abrir el fichero "+fichero);
}
return fx;
}
public boolean equals(Object o){
boolean devuelve;
if( o instanceof Fecha && this.d ==((Fecha)o).getD() && this.m==((Fecha)o).getM()
&& this.a ==((Fecha)o).getA())devuelve= true;
else devuelve =false;
return devuelve;
}
public String toString(){
return this.d+"/"+this.m +"/"+this.a;
}
public String toString2(){
return ""+this.d+"/"+this.m + "/"+this.a+"\t"+diaSemana()+"\t"+c;
}
public String toString3(){
return ""+this.d+" "+this.m + " "+this.a+"\t"+diaSemana()+"\t"+c;
}
public static void main(String[] arg){
Fecha fecha = new Fecha(1,1,1);
fecha.fecha();//método principal que arranca el código
/*
Scanner teclado =new Scanner(System.in).useLocale(Locale.US);
System.out.println("Introduzca la fecha (digitos): dia ");
int dia = teclado.nextInt();
System.out.println("Introduzca la fecha (digitos): mes ");
int mes = teclado.nextInt();
System.out.println("Introduzca la fecha(digitos): año ");
int año = teclado.nextInt();
Fecha f1 = new Fecha(dia,mes,año);
System.out.println(f1.toString2());*/
}
}
Comentarios
Publicar un comentario