Fórum Calculando o ano bissexto #568207

09/04/2009

0

Essa pequena função imprime o total de dias do mês de fevereiro, caso 28, não é bissexto, caso 29 é.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static void main(String[] args) {
    int year = 2200;
    /** Os nomes dos meses */
    String[] months = { "Janeiro", "Fevereiro", "Março", "Abril", "Maio",
            "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro",
            "Dezembro" };
 
    int dom[] = { 31, 28, 31, 30, /* jan fev mar abr */
    31, 30, 31, 31, /* mai jun jul ago */
    30, 31, 30, 31 /* set out nov dez */
    };
 
    /** Os dias em cada mes */
    if (year % 400 == 0) {
        dom[1] = 29;
    } else {
        if(year%4 == 0 && year%100!=0){
            dom[1] = 29;
        }
    }
    System.out.println("Resultado: " +  dom[1] );
}
Cya!
Dalton

Dalton

Responder

Posts

09/04/2009

Vitor Pamplona

Mas que função mais enrolada...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.Calendar;
 
public class Main {
    public static void main(String[] args) {
        System.out.println(getMaxDiasFevereiro(2004));
    }
     
    public static int getMaxDiasFevereiro(int year) {
        Calendar cal = (Calendar) Calendar.getInstance().clone();
         
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.MONTH, 1); // Fevereiro
        return cal.getActualMaximum(Calendar.DAY_OF_MONTH);
    }
}
Responder

Gostei + 0

09/04/2009

Vitor Pamplona

vcs são realmente estranhos...
1
2
3
4
5
6
7
8
9
/**
 * @author Lucastex - lucas@javafree.com.br
 */
import java.util.GregorianCalendar;
public class Bissexto {
    public static void main(String[] args) {
        System.out.println(new GregorianCalendar().isLeapYear(2004));
    }
}
Responder

Gostei + 0

09/04/2009

Vitor Pamplona

ueh.. a função é para retornar o número de dias de fevereiro ou para dizer se é bisexto ou não... :P :o
Responder

Gostei + 0

09/04/2009

Vitor Pamplona

Ahhh tah, entao desculpa.... pega o retorno e ainda faz um if.... heAUIEiuahsiuehAIUehusaeEUiSA :!:
Responder

Gostei + 0

09/04/2009

Vitor Pamplona

Mesmo assim, 10 a 0 pra nós Lucas!! :D Isso será uma regra? Algo assim:
1
2
3
public boolean torcedorIgualATime() {
    return dalton.equals(gremio);
}
:o :o
Responder

Gostei + 0

09/04/2009

Vitor Pamplona

hauheiuahiehaiuehiuase ta ta ta.... entao vc quis fazer um metodo que calculasse qtos dias tem fevereiro eashueasiehaeiahieu tah bom... mas o topico ainda é pra calcular ano bisexto aesheasoiuehlfkjsdhroiau para de ser fresco.... :P
Responder

Gostei + 0

09/04/2009

Vitor Pamplona

É que o babaca do Dalton colocou um título e implementou outro.. Como eu sou nerd eu olhei a implementação e lá tem uma linha assim:
1
System.out.println("Resultado: " +  dom[1]);
E isso retorna ou 28 ou 29 :D []s
Responder

Gostei + 0

09/04/2009

Vitor Pamplona

[quote="vfpamp"]É que o babaca do Dalton colocou um título e implementou outro.. Como eu sou nerd eu olhei a implementação e lá tem uma linha assim:
1
System.out.println("Resultado: " +  dom[1]);
E isso retorna ou 28 ou 29 :D []s
O filhote de cruz credo, não sei se tu viu que o método é main, portanto, tem sujeira lá dentro que você como bom programador java, deveri abstrair e olhar para o 'contiúdo' da coisa, ou seja, o algoritmo para calcular o ano bissexto:
1
2
3
4
5
6
7
if (year % 400 == 0) {
    Bissexto!
} else {
    if(year%4 == 0 && year%100!=0){
        Bissexto!
    }
}
Mas o Lucas resolveu de uma forma mais inteligente e funcional :P
1
System.out.println(new GregorianCalendar().isLeapYear(2004));
Então, cala-te! :o
Responder

Gostei + 0

09/04/2009

Vitor Pamplona

[quote="aspirante"] O filhote de cruz credo
:hauhau: :hauhau: :hauhau: [quote="aspirante"] Não sei se tu viu que o método é main, portanto, tem sujeira lá dentro que você como bom programador java, deveri abstrair e olhar para o 'contiúdo' da coisa, ou seja, o algoritmo para calcular o ano bissexto:
Sim, agora vou ter que traduzir os teus xunxos? Overpower esse algorítmo hein?? :D [quote="aspirante"] Mas o Lucas resolveu de uma forma mais inteligente e funcional Razz
1
System.out.println(new GregorianCalendar().isLeapYear(2004));
Então, cala-te! Metal Rules!!
Claro! :D Só não esqueça de pedir ao resto do mundo que use um Calendário Gregoriano
1
2
3
4
5
6
public static boolean isBissexto(int year) {
    Calendar cal = Calendar.getInstance();
    if (cal instanceof GregorianCalendar)
        return ((GregorianCalendar)cal).isLeapYear(year);
    return false;
}
E só para tua informação... Esse é o algorítmo para calcular o bissexto.. :D
1
2
3
4
5
6
7
8
9
10
public static boolean isBissexto ( int year) {
   // Ano antes de cristo se adiciona + 1.
   if ( year < 0 ) return ((year + 1) & 3) == 0;
   // Antes de 1582 não existe a regra dos 100 anos
   if ( year < 1582 ) return (year & 3) == 0;
   // Se for divisível por quatro não por 100.
   if ((year & 3) == 0 && year % 100 != 0 ) return true;
   // última chance ser for múltiplo de 400
   return ( year % 400 == 0 );
}
Isso, claro, para o calendário gregoriano. :D 8)
Responder

Gostei + 0

09/04/2009

Vitor Pamplona

Para explicar melhor... Antes de 1582 não existia Calendário Gregoriano, existia o Calendário Juliano que simplesmente considerava bissexto todos os anos múltiplos de 4. Portanto o povão daquela época viveu um 29 de fevereiro de 1500. Então.. o teu super algorítmo deve considerar isso também. É claro, depois de 15 de outubro de 1582 surgiram outros calendários como o de Herschel, o Grego Ortodoxo, que é usado na Rússia, e o Spawar http://astro.nmsu.edu/~lhuber/leaphist.html http://mindprod.com/jgloss/leapyear.html http://www.cs.arizona.edu/classes/cs127a/fall04/Quizzes/Geek-exercise-10-23.htm
Responder

Gostei + 0

09/04/2009

Vitor Pamplona

O anta, cada ano divisível por 4 é um ano bissexto. Entretanto, cada ano divisível por 100 não é um ano bissexto. Entretanto, todo ano divisível por 400 é um ano bissexto sempre. Portanto, 1700, 1800, 1900, 2100 e 2200 não são anos bissextos. Porém, 1600, 2000 e 2400 são anos bissextos. Contrapondo, no Calendário Juliano antigo todos os anos divisíveis por 4 eram bissextos. Se você observar bem, meu algoritmo está correto :!: :o
Responder

Gostei + 0

09/04/2009

Vitor Pamplona

[quote="aspirante"] Se você observar bem, meu algoritmo está correto :!:
Não com anos anteriores a 1582
Responder

Gostei + 0

09/04/2009

Vitor Pamplona

[quote="vfpamp"][quote="aspirante"] Se você observar bem, meu algoritmo está correto :!:
Não com anos anteriores a 1582
Só para salientar... 1500 é Bissexto! :P []s
Responder

Gostei + 0

09/04/2009

Vitor Pamplona

[b] Pah kuanto às vossas desavenças não sei.. mas quero agradecer e a favor ao pessoal... que acabaram de me resolver o problema no trabalho ke tinha pa fazer na aula... Obrigadão... portem-se e continuem ... Abraço []'s
Responder

Gostei + 0

09/04/2009

Vitor Pamplona

O amorrrr é uma dorrrr... :lol: A Paz!!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar