el codigo que tengo es:
Código:
me podeis decir como hacer los dias????import cs1.Keyboard; import java.lang.String; import java.text.*; import java.util.*; public class EX1 { public static void main(String args[]) { String nom1,nom2,nom3,sec1,sec2,sec3,data1,data2,data3; int num1,num2,num3,num4; int dia1,dia2,dia3,mes1,mes2,mes3,any1, any2,any3; String data,sistem, comprobar = "n" ; int dia,mes,anno,anyfin1=0,anyfin2=0,anyfin3=0,mesfin1,mesfin2,mesfin3; int diafinal1=0, diafinal2=0,diafinal3=0; System.out.print("Entra el nom de la primera persona: "); nom1 = Keyboard.readString(); System.out.print("Entra la seccio de la primera persona: "); sec1 = Keyboard.readString(); System.out.print("Entra la data d'alta de la primera persona:(dd/mm/aaaa) "); data1 = Keyboard.readString(); System.out.print("Entra el nom de la segona persona: "); nom2 = Keyboard.readString(); System.out.print("Entra la seccio de la segona persona: "); sec2 = Keyboard.readString(); System.out.print("Entra la data d'alta de la segona persona: (dd/mm/aaaa) "); data2 = Keyboard.readString(); System.out.print("Entra el nom de la tercera persona: "); nom3 = Keyboard.readString(); System.out.print("Entra la seccio de la tercera persona: "); sec3 = Keyboard.readString(); System.out.print("Entra la data d'alta de la tercera persona: (dd/mm/aaaa) "); data3 = Keyboard.readString(); //separacion fechas //primera persona num1 = data1.length(); dia1=Integer.valueOf(data1.substring(0,2)).intValue() ; mes1=Integer.valueOf(data1.substring(3,5)).intValue() ; any1=Integer.valueOf(data1.substring(6 ,10)).intValue() ; //segunda persona num2 = data2.length(); dia2=Integer.valueOf(data2.substring(0,2)).intValue() ; mes2=Integer.valueOf(data2.substring(3,5)).intValue() ; any2=Integer.valueOf(data2.substring(6 ,10)).intValue() ; //tercera persona num3 = data3.length(); dia3=Integer.valueOf(data3.substring(0,2)).intValue() ; mes3=Integer.valueOf(data3.substring(3,5)).intValue() ; any3=Integer.valueOf(data3.substring(6 ,10)).intValue() ; System.out.print("Vol utilitzar la data del sistema? s/n "); sistem = Keyboard.readString(); if (sistem.equals(comprobar)){ //si quiere poner la fecha a mano System.out.print("Entri la data de amb la que vol fer el calcul: (dd/mm/aaaa) "); data = Keyboard.readString(); num4=data.length(); dia = Integer.valueOf(data.substring(0,2)).intValue() ; mes = Integer.valueOf(data.substring(3,5)).intValue() ; anno = Integer.valueOf(data.substring(6,10)).intValue() ; } else{ //fecha actual Date date = new Date(); String formato4 = new String("dd/MM/yyyy"); SimpleDateFormat formatoSimple = new SimpleDateFormat(formato4); data = formatoSimple.format(date); num4=data.length(); dia = Integer.valueOf(data.substring(0,2)).intValue() ; mes = Integer.valueOf(data.substring(3,5)).intValue() ; anno = Integer.valueOf(data.substring(6,10)).intValue() ;} //calcular años if (any1 >anno) System.out.print("L'any actual ha de ser mes gran que el d'alta"); else anyfin1= anno - any1; if (any2 >anno) System.out.print("L'any actual ha de ser mes gran que el d'alta"); else anyfin2= anno - any2; if (any3 >anno) System.out.print("L'any actual ha de ser mes gran que el d'alta"); else anyfin3= anno - any3; //calcular mes if (mes1>mes){ mesfin1=0;} else{ mesfin1= mes - mes1 -1;} if (mes2>mes){ mesfin2 =0;} else{ mesfin2= mes - mes2-1;} if(mes3>mes){ mesfin3 =0;} else{ mesfin3= mes - mes3-1;} // dia_total1 = (29 - dia_alta11) + (int)Math.floor((any_actual0 - any_alta11)/4) ; //calcular dia primero double val1 = any1 %100; double val11 = any1 %400; if ((val1 ==0)&&(val11==0)&&(mes1==02)) { diafinal1= (29- dia1)+(int)Math.floor(anyfin1/4); } else{ if ((mes1==01)||(mes1==03)||(mes1==05)||(mes1==07)||(mes1==8)||(mes1==10)||(mes1==12)) { diafinal1 = 31- dia1+(int)Math.floor(anyfin1/4);} else{ if ((mes1==04)||(mes1==06)||(mes1==9)||(mes1==11)) { diafinal1 = 30 - dia1+(int)Math.floor(anyfin1/4); } else{ double valor1 = any1%4; if (valor1 == 0){ diafinal1 = 29 - dia1+(int)Math.floor(anyfin1/4);} else diafinal1=28-dia1+(int)Math.floor(anyfin1/4);} }} // calcular dia segundo double val2 = any2 %100; double val21 = any2%400; if ((val2 ==0)&&(val21==0)&&(mes2==02)) { diafinal2= 29- dia2; } else{ if ((mes2==01)||(mes2==03)||(mes2==05)||(mes2==07)||(mes2==8)||(mes2==10)||(mes2==12)) { diafinal2 = 31- dia2+(int)Math.floor(anyfin2/4);} else{ if ((mes2==04)||(mes2==06)||(mes2==9)||(mes2==11)) { diafinal2 = 30 - dia2+(int)Math.floor(anyfin2/4); } else{ double valor23 = any2%4; if (valor23 == 0){ diafinal2 = 29 - dia2+(int)Math.floor(anyfin2/4);} else diafinal2=28-dia2+(int)Math.floor(anyfin2/4);} }} // calcular dia tercero double val3 = any3 %100; double val31 = any3%400; if ((val3 ==0)&&(val31==0)&&(mes3==02)) { diafinal3= 29- dia3+(int)Math.floor(anyfin3/4); } else{ if ((mes3==01)||(mes3==03)||(mes3==05)||(mes3==07)||(mes3==8)||(mes3==10)||(mes3==12)) { diafinal3 = 31- dia3+(int)Math.floor(anyfin3/4);} else{ if ((mes3==04)||(mes3==06)||(mes3==9)||(mes3==11)) { diafinal3 = 30 - dia3+(int)Math.floor(anyfin3/4); } else{ double valor32 = any2%4; if (valor32 == 0){ diafinal3 = 29 - dia3+(int)Math.floor(anyfin3/4);} else diafinal3= 28-dia3+(int)Math.floor(anyfin3/4);} }} //salida por pantalla System.out.println("nom"+" " + "seccio"+" " + "Data sd'alta"+" "+"vida laboral"); System.out.println(nom1+" "+sec1+" "+data1+" "+diafinal1+" dies "+mesfin1+" mesos "+anyfin1+" anys "); System.out.println(nom2+" "+sec2+" "+data2+" "+diafinal2+" dies "+mesfin2+" mesos "+anyfin2+" anys "); System.out.println(nom3+" "+sec3+" "+data3+" "+diafinal3+" dies "+mesfin3+" mesos "+anyfin3+" anys "); } }
esk no me salen bien, es por que no todos los años tienen los mismos dias.
se que se podria hacer con un bucle o con el gregorian calendar pero es que en este ejercicio no nos lo dejan hacer y a mi ya no se me ocurre nada
gracias por todo