|
Mostrar Mensajes
|
Páginas: 1 2 3 [4]
|
33
|
Programación / Java / ayuda calendario, calculo dia de la semana
|
en: 24 Enero 2010, 18:48 pm
|
hola me gustaria saber como se calculla el primer dia del mes en que empieza, es decir si el dia 1 de cada mes es lunes, martes, miercoles.......... he encontrado esta formula pero no la consigo hacer funcionar me da numeros por encima del 2000 para en enero y febrero n = anyo + 31*(mes - 1) + (anyo - 1) div 4 - 3*((anyo + 99) div 100) div 4 para el resto n = anyo + 31*(mes-1) + 1 - (4*mes + 23) div 10 + anyo div 4 - (3*(anyo div 100 + 1)) div 4 - 1
que supongo k modificadas para java seran : para en enero y febrero n = anyo + 31*(mes - 1) + (anyo - 1) %4 - 3*((anyo + 99) %100) %4 para el resto n = anyo + 31*(mes-1) + 1 - (4*mes + 23) %10 + anyo div 4 - (3*(anyo %100 + 1)) %4 - 1 es asi no???? me urguiria la respuesta por que tengo k hacabarlo en breve, si encuentro la solucion ya la publicare
gracias por todo
|
|
|
34
|
Programación / Java / Re: ayuda con un programa que no me sale
|
en: 5 Noviembre 2009, 20:35 pm
|
naaa esto muy facil ademas me da errores deberias mejorar tu code añadiendo matrizes por lo demas no veo que te detiene. Saludos. lo k pasa es que no me salen los dias, con algunos valores me da bien pero no con todo por los años que tienen 366 dias. por cierto a mi no me da errores, y a que te refieres con matrices????, cuenta que nos dejan usar pocas cosas. te cuelgo el codigo con lo ultimo que he modificado: 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 "); } }
gracias por todo
|
|
|
35
|
Programación / Java / ayuda con un programa que no me sale
|
en: 5 Noviembre 2009, 11:25 am
|
hola tengo un problema, tengo que hacer un programa que me calcule la vida laboral, el usuario ademas de introducir unos datos tiene que poner la fecha de ingreso, y luego se pone si quiere la fecha del sistema o manual, y al final lo muestra en dias, meses y años, con la limitacion que solo podemos usar if/else o como mucho switc, osea sin bucles por que es un ejercicio de clase en el que me he atascado desde hace un tiempo, por que me calcula bien los años pero los meses a veces falla y los dias tambien, me podeis ayudar???? el codigo que tengo es: 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;} //calcular dia primero double val1 = any1 %100; double val11 = any1 %400; if ((val1 ==0)&&(val11==0)&&(mes1==02)) { diafinal1= 29- dia1; } else{ if ((mes1==01)||(mes1==03)||(mes1==05)||(mes1==07)||(mes1==8)||(mes1==10)||(mes1==12)) { diafinal1 = 31- dia1+4;} else{ if ((mes1==04)||(mes1==06)||(mes1==9)||(mes1==11)) { diafinal1 = 30 - dia1+4; } else{ double valor1 = any1%4; if (valor1 == 0){ diafinal1 = 29 - dia1;} else diafinal1=28-dia1;} }} // 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+3;} else{ if ((mes2==04)||(mes2==06)||(mes2==9)||(mes2==11)) { diafinal2 = 30 - dia2+4; } else{ double valor23 = any2%4; if (valor23 == 0){ diafinal2 = 29 - dia2;} else diafinal2=28-dia2;} }} // calcular dia tercero double val3 = any3 %100; double val31 = any3%400; if ((val3 ==0)&&(val31==0)&&(mes3==02)) { diafinal3= 29- dia3; } else{ if ((mes3==01)||(mes3==03)||(mes3==05)||(mes3==07)||(mes3==8)||(mes3==10)||(mes3==12)) { diafinal3 = 31- dia3+3;} else{ if ((mes3==04)||(mes3==06)||(mes3==9)||(mes3==11)) { diafinal3 = 30 - dia3+4; } else{ double valor32 = any2%4; if (valor32 == 0){ diafinal3 = 29 - dia3;} else diafinal3= 28-dia3;} }} //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 "); } }
por cierto aún falta el control de errores pero lo pondre mas adelante. me podeis ayudar???? gracias por todo
|
|
|
|
|
|
|