Calendário

5 respostas
F

Olá alguém sabe o que tem de errado com meu código?

package calendario;

import java.util.Calendar;

import java.util.GregorianCalendar;

import java.util.Scanner;

/**
*

*/
public class Main {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    // TODO code application logic here
    GregorianCalendar calendario = new GregorianCalendar();//calendario que se pega no computador
    Scanner leitor = new Scanner(System.in);//O scaner força a entrada dos dados no console
    int ano;//Criando as variáveis ano e mes
    int mes;
    
    System.out.println("Digite o ano! ");//digitando o ano
    ano = leitor.nextInt(); //  pegando o proximo numero     
    System.out.println("Digite o mês! ");//digitando o mes
    mes = leitor.nextInt(); //pegando o proximo numero
    calendario.set(Calendar.DAY_OF_MONTH , 1);// mostrando o 1º dia do mes
    
    calendario.set(Calendar.MONTH, mes+1);//mostrando o mes (pq o mes janeiro começa com 0 e fevereiro com 1 , etc)
    calendario.set(Calendar.YEAR,ano);//mostrando o ano
    int diaum;//criando uma variável para ser o 1° dia
    diaum = calendario.getActualMinimum(Calendar.DAY_OF_WEEK);// Mostra o menor dia que tem no mes
    
    
    System.out.print("Do ");//imprimindo o nome dos dias em sequencia ou seja sem quebra de linha(print)
    System.out.print("Se ");
    System.out.print("Te ");
    System.out.print("Qa ");
    System.out.print("Qi ");
    System.out.print("Se ");
    System.out.print("Sa ");
    System.out.println();
    for(int i=0; i<diaum;i++)// criando um for para inserir o dia nos espaços
    System.out.print("   ");// 3 espaços
    
    for(int j=1; j<calendario.getActualMaximum(Calendar.DAY_OF_MONTH);j++){//Mostra o maior dia que tem no mes
        String dia =Integer.toString(j);//converte o numero referente ao mes em Mes(ou seja 2= fevereiro)
        System.out.print(dia);//mostra ao dia
        System.out.print(" ");// coloca um espaço para o dia se encaixar
        if (dia.length()==1) System.out.print(" ") ;//Verifica o tamanho da string dia(por exemplo 31 o tamanho é 2)
       
        if ((diaum+j)%7==0) //os dias da semana tem que ser diferente de 1 e então mopstrar os dias da semana
            System.out.println();
    }
    
    
    
    
}

}

5 Respostas

rdgms

não… você que poderia… falar…
oque esta dando?
:smiley:

Focao

compilou e mostrou o calendário… bem legal hein

// TODO code application logic here
			GregorianCalendar calendario = new GregorianCalendar();// calendario que se pega no computador
			Scanner leitor = new Scanner(System.in);// O scaner força a entrada dos dados no console
			int ano;// Criando as variáveis ano e mes
			int mes;

			System.out.println("Digite o ano! ");// digitando o ano
			ano = leitor.nextInt(); // pegando o proximo numero
			System.out.println("Digite o mês! ");// digitando o mes
			mes = leitor.nextInt(); // pegando o proximo numero
			calendario.set(Calendar.DAY_OF_MONTH, 1);// mostrando o 1º dia do mes

			calendario.set(Calendar.MONTH, mes + 1);// mostrando o mes (pq o mes janeiro começa com 0 e fevereiro com 1 , etc)
			calendario.set(Calendar.YEAR, ano);// mostrando o ano
			int diaum;// criando uma variável para ser o 1° dia
			diaum = calendario.getActualMinimum(Calendar.DAY_OF_WEEK);// Mostra o menor dia que tem no mes

			System.out.print("Do ");// imprimindo o nome dos dias em sequencia ou seja sem quebra de linha(print)
			System.out.print("Se ");
			System.out.print("Te ");
			System.out.print("Qa ");
			System.out.print("Qi ");
			System.out.print("Se ");
			System.out.print("Sa ");
			System.out.println();
			for (int i = 0; i < diaum; i++)
				// criando um for para inserir o dia nos espaços
				System.out.print(" ");// 3 espaços

			for (int j = 1; j < calendario.getActualMaximum(Calendar.DAY_OF_MONTH); j++) {// Mostra o maior dia que tem no mes
				String dia = Integer.toString(j);// converte o numero referente ao mes em Mes(ou seja 2= fevereiro)
				System.out.print(dia);// mostra ao dia
				System.out.print(" ");// coloca um espaço para o dia se encaixar
				if (dia.length() == 1)
					System.out.print(" ");// Verifica o tamanho da string dia(por exemplo 31 o tamanho é 2)

				if ((diaum + j) % 7 == 0) // os dias da semana tem que ser diferente de 1 e então mopstrar os dias da semana
					System.out.println();
			}

Do Se Te Qa Qi Se Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

F

O que acontece é que todos os meses estão começando na segunda feira.Se alguem puder ajudar, agradeço.

F

O dia 1º de todos os meses começam na segunda feira.

B

Sobre o código:

é mes - 1, não mes + 1:

calendario.set(Calendar.MONTH, mes - 1);//mostrando o mes (pq o mes janeiro começa com 0 e fevereiro com 1 , etc)

Ele já começa no primeiro dia do mês, então é só pegar o valor direto:

diaum = calendario.get(Calendar.DAY_OF_WEEK);// Mostra o menor dia que tem no mes

e finalmente

for (int i = 1; i < diaum; i++)// criando um for para inserir o dia nos espaços System.out.print(" ");// 3 espaços

Aqui agora ele imprime

Digite o ano! 2008 Digite o mês! 11 Do Se Te Qa Qi Se Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
Já é um bom começo, você pode continuar :slight_smile:

Recomendo separar isso em vários métodos pequenos, pra poder fazer as coisas com uma lógica mais fácil.

Criado 12 de novembro de 2008
Ultima resposta 12 de nov. de 2008
Respostas 5
Participantes 4