Dúvida em algoritmo para mostrar a semana de uma determinada Data [RESOLVIDO]

1 resposta
J

Olá galera,

Estou desenvolvendo um algoritmos para pegar a semana de uma determinada data no formado dd/mm/aaaa.

Até aonde eu fiz funcionou. Gostaria de algumas idéias para o algoritmo ficar menor e mais objetivo.

import java.util.Scanner;
public class Semanas{
    public static void main(String[] args){
        Scanner teclado = new Scanner(System.in);
        
        System.out.print("Digite a data no formato dd/mm/aaaa: ");
        String dt = teclado.nextLine();        
        
        String diaS = dt.substring(0, 2);
        String mesS = dt.substring(3, 5);
        String anoS = dt.substring(6, 10);
                
        int dia = Integer.parseInt(diaS);
        int mes = Integer.parseInt(mesS);
        int ano = Integer.parseInt(anoS);
        
        int dias = dia;
        int semanaAno=1;

        if(mes==1){
            semanaAno=dias/7;
            if(semanaAno==0){
                semanaAno=1;
            }
            else{
                semanaAno+=1;
            }
        }
        
        else{
            if(mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12){
               dias+=(mes-1)*31;
            }            
            else if(mes==2){                
               if(ano%400==0 || (ano%4==0 && ano%100!=0))
                  dias+=(mes-1)*29;           
               else
                  dias+=(mes-1)*28;
            }                
            else
               dias+=(mes-1)*30;                 
               
            semanaAno = dias/7;
        }
                                             
        System.out.println("Você está na semana de nº "+semanaAno+" do ano");
        
    }
}

1 Resposta

pmlm

Isso é trabalho da escola?

Se sim, tens de rever esse algoritmo pois está a assumir que todos os meses até ao mês actual têm o mesmo número de dias.
Por exemplo: 31Jan dá semana 5 mas 01Fev dá semana 4. Ou 31Mai dá semana 22 e 01Jun dá semana 21.

Se não é para a escola, podes fazer simplesmente:

Scanner teclado = new Scanner(System.in);
System.out.print("Digite a data no formato dd/mm/aaaa: ");
String dt = teclado.nextLine();

DateFormat dfInput = new SimpleDateFormat("dd/MM/yyyy");
Date date = dfInput.parse(dt);

DateFormat dfOuput = new SimpleDateFormat("w");
System.out.println("Você está na semana de nº " + dfOuput.format(date) + " do ano");
Criado 2 de maio de 2012
Ultima resposta 3 de mai. de 2012
Respostas 1
Participantes 2