Por favor, quem pode me ajudar? De antemão, muito obrigado.
Sou principiante em Java estou montando um vetor com feriados fixos do Brasil a partir de 1980 até 2060 usando a classe GregorianCalendar, ou seja, preciso de um vetor que contenha todos os feriados fixos, ex.: 01-jan-1980, 21-abr-1980, 01-mai-1980, ... 25-dez-1980, ... 01-jan-2060, 21-abr-2060, ... 25-dez-2060.
Para obter estes dados, manipulei as datas através de um looping e os resultados armazenados em todo o vetor criado referem-se ao último ano obtido, ou seja, fica uma quantidade enorme de registro apenas com os feriados de 2060 e assim, compromete todo o resultado.
Por tratar-se de variáveis ?static?, o vetor criado assume a identidade referente ao vetor auxiliar que criei para acrescentar anos, sendo que este no último estágio do looping tem o ano de 2060. Ao retirar a declaração ?static?, o vetor auxiliar não é criado.
O resultado do programa abaixo mostra que não consegui obter as diferentes datas no vetor de armazenamento, chamado ferFix:
// FazFeriadoFixo.java
import java.util.GregorianCalendar;
public class FazFeriadoFixo
{
private static GregorianCalendar[] ferFix = new GregorianCalendar[642];
private static GregorianCalendar[] feriadofixo = new GregorianCalendar[9];
public static void main( String[] args )
{
/* #### feriados fixos desde o ano 1980 até o ano 2060 ###
e que não sejam sábados e domingos ##### */
feriadofixo[1] = new GregorianCalendar(1979, 0, 1);
feriadofixo[2] = new GregorianCalendar(1979, 3, 21);
feriadofixo[3] = new GregorianCalendar(1979, 4, 1);
feriadofixo[4] = new GregorianCalendar(1979, 8, 7);
feriadofixo[5] = new GregorianCalendar(1979, 9, 12);
feriadofixo[6] = new GregorianCalendar(1979, 10, 2);
feriadofixo[7] = new GregorianCalendar(1979, 10, 15);
feriadofixo[8] = new GregorianCalendar(1979, 11, 25);
int cont = 0;
int ctd;
int ano = 1979;
int weekDay;
while (ano < 2060)
{
for(ctd = 1; ctd < 9; ctd++)
{
feriadofixo[ctd].add(feriadofixo[ctd].YEAR,1);
weekDay = feriadofixo[ctd].get(feriadofixo[ctd].DAY_OF_WEEK);
ano = feriadofixo[ctd].get(feriadofixo[ctd].YEAR);
if ( (weekDay > 1) && (weekDay < 7) && (ano < 2100) )
{
cont ++;
ferFix[cont] = feriadofixo[ctd];
} // fim de if
} // fim de for
}// fim de while
for (ctd = 1; ctd < 19;ctd++)
{
System.out.printf( "A data de ferFix agora eh : \n%tc%s%d\n\n", ferFix[ctd], " ", ctd);
}
} // fim de main
} // fim da classe FazFeriadoFixo
O resultado é:
A data de ferFix agora eh :
Qui Jan 01 00:00:00 BRST 2060 - o nr do registro eh: 1
A data de ferFix agora eh :
Qua Abr 21 00:00:00 BRT 2060 - o nr do registro eh: 2
A data de ferFix agora eh :
Sßb Mai 01 00:00:00 BRT 2060 - o nr do registro eh: 3
A data de ferFix agora eh :
Sßb Dez 25 00:00:00 BRST 2060 - o nr do registro eh: 4
A data de ferFix agora eh :
Qui Jan 01 00:00:00 BRST 2060 - o nr do registro eh: 5
A data de ferFix agora eh :
Qua Abr 21 00:00:00 BRT 2060 - o nr do registro eh: 6
A data de ferFix agora eh :
Sßb Mai 01 00:00:00 BRT 2060 - o nr do registro eh: 7
A data de ferFix agora eh :
Ter Set 07 00:00:00 BRT 2060 - o nr do registro eh: 8
A data de ferFix agora eh :
Ter Out 12 00:00:00 BRT 2060 - o nr do registro eh: 9
A data de ferFix agora eh :
Ter Nov 02 01:00:00 BRST 2060 - o nr do registro eh: 10
A data de ferFix agora eh :
Sßb Dez 25 00:00:00 BRST 2060 - o nr do registro eh: 11
A data de ferFix agora eh :
Qui Jan 01 00:00:00 BRST 2060 - o nr do registro eh: 12
A data de ferFix agora eh :
Qua Abr 21 00:00:00 BRT 2060 - o nr do registro eh: 13
A data de ferFix agora eh :
Ter Set 07 00:00:00 BRT 2060 - o nr do registro eh: 14
A data de ferFix agora eh :
Ter Out 12 00:00:00 BRT 2060 - o nr do registro eh: 15
A data de ferFix agora eh :
Ter Nov 02 01:00:00 BRST 2060 - o nr do registro eh: 16
A data de ferFix agora eh :
Seg Nov 15 00:00:00 BRST 2060 - o nr do registro eh: 17
A data de ferFix agora eh :
Qua Abr 21 00:00:00 BRT 2060 - o nr do registro eh: 18