Hola amigos, tengo este código y no se que es lo que estoy haciendo mal, creo que no me coge el else pero nose porque motivo.
import cs1.Keyboard;
public class Programaslongevitat
{
public static void main (String[] args)
{
String fechahoy, fechaalta,anys1,anys3,meshoy1,mesalta1,diahoy1,dialta2;
int anys,anys2,anys4,mesalta,meshoy,meses,dialta=0,diahoy=0,dias=0,dies=0,dialta1,fechahoy1,fechalta1;
System.out.println("introduce la fecha de alta (aa/yy/mmmm)");
fechaalta=Keyboard.readString();
System.out.println("introduce la fecha de hoy (aa/yy/mmmm)");//lo que estamos cortando aqui es un string y lo declaro como un string
fechahoy=Keyboard.readString();
anys1= fechahoy.substring(6,10);//aqui hemos cortado y guradado mmmm como string de fechahoy
anys2=Integer.valueOf(anys1).intValue();//aqui hemos creado la variable anys2 para pasarlo como integer
anys3=fechaalta.substring(6,10);//aqui hemos cortado y guradado mmm como string de fechaalta
anys4=Integer.valueOf(anys3).intValue();//aqui hemos creado la variable anys4 para pasarlo a integer
meshoy1=fechahoy.substring(3,5);//aqui hemos cortado y guardado YY como string de fechahoy
meshoy=Integer.valueOf(meshoy1).intValue();//aqui hemos creado la variable meshoy para pasarlo a integer
mesalta1=fechaalta.substring(3,5);//
mesalta=Integer.valueOf(mesalta1).intValue();
fechalta1=Integer.valueOf(fechaalta.substring(6,10)).intValue();
fechahoy1=Integer.valueOf(fechahoy.substring(6,10)).intValue();
anys = anys2-anys4;
if (meshoy==1)
dies=31;
else if (meshoy==2)//años bisiestos
if((fechahoy1 % 4 == 0) && ((fechahoy1% 100 != 0) || (fechahoy1 % 400 == 0)))
dies=29;
else
dies=28;//el año no es bisiesto
else if (meshoy==3)
dies=31;
else if (meshoy == 4)
dies = 30;
else if (meshoy == 5)
dies = 31;
else if (meshoy == 6)
dies = 30;
else if (meshoy == 7)
dies = 31;
else if (meshoy == 8)
dies = 31;
else if (meshoy == 9)
dies = 30;
else if (meshoy == 10)
dies = 31;
else if (meshoy == 11)
dies = 30;
else if (meshoy == 12)
dies = 31;
if (mesalta == 1)
dialta1 = 31;
else if (mesalta == 2)
if ((fechalta1 % 4 == 0) && ((fechalta1 % 100 != 0) || (fechalta1 % 400 == 0)))
//("El año es bisiesto");
dialta1 = 29;
else
//"El año no es bisiesto";
dialta1= 28;
else if (mesalta == 3)
dialta1 = 31;
else if (mesalta == 4)
dialta1 = 30;
else if (mesalta == 5)
dialta1 = 31;
else if (mesalta == 6)
dialta1 = 30;
else if (mesalta == 7)
dialta1 = 31;
else if (mesalta == 8)
dialta1 = 31;
else if (mesalta == 9)
dialta1 = 30;
else if (mesalta == 10)
dialta1 = 31;
else if (mesalta == 11)
dialta1 = 30;
else if (mesalta == 12)
dialta1 = 31;
//años
if(anys2<anys4)
System.out.print("ERROR: la fecha de alta no puede ser mayor a la fecha de hoy");
//meses
if(meshoy<mesalta){
meses=12-mesalta+meshoy;
anys=anys-1;
}
else if (mesalta<meshoy)
meses =meshoy-mesalta;
else
meses =0;
//dias
if (meshoy == mesalta){
if(diahoy>dialta)
dias=diahoy-dialta;
if(diahoy<dialta){
dias=dialta-diahoy;
anys=anys-1;
}
else
dias=0;
}
if(meshoy>mesalta){
if(diahoy>dialta)
dias=diahoy-dialta;
else if(dialta>diahoy){
meses=meses-1;
dias=dies-dialta+diahoy;
}
else
dias=0;
}
else if (mesalta>meshoy){
if(diahoy>dialta)
dias=diahoy-dialta;
else if(dialta>diahoy){
dias=dias-dialta+diahoy;
meses=meses+1;
}
else
dias=0;
System.out.print("\n"+anys+"anys\t");
System.out.print(meses+"meses \t");
System.out.print(dias+"dias \t");
}
}
}
muchas gracias de antemano