Primeiro Programa

opa!

galera sofri para conseguir fazer esse tipo de coisa tão inútil, mas consegui, se puderem dar uma olhada e verem o que eu fiz fico muito grato

abraço

Tarefa.java

/**
 * 
 * SisAgenda Versão 0.1
 * 
 * Tarefa.java Versão 0.2
 * 
 * @author Paulo Fernandes   
 * paulofernandes[ arroba ]gmail[ . ]com
 *  
 * Histórico de Versão: 
 * --------v 0.1----------
 * - Utilizado os métodos e atributos da Classe Calendar [ this.data.get(Calendar.DAY_OF_MONTH) ]
 *   para realizar a formatação  
 *  
 * --------v 0.2----------
 * - Utilizada a Classe SimpleDateFormat para formatar data
 * - Utilizado o método getTime() da Classe Calendar para converter o Calendar em Date
 * 
 */
import java.util.Calendar;
import java.text.SimpleDateFormat;

public class Tarefa {
	//variaveis
	private String descricao;
    private Calendar data;
    
    //construtor
    public Tarefa(){
    	
    }

    public Tarefa(Calendar data, String descricao){
    	this.data = data;
    	this.descricao = descricao;
    }

    //metodos getters
    public String getDescricao(){
    	return this.descricao;
    }
        
    public String formataData(){
    	SimpleDateFormat form = new SimpleDateFormat("dd/MM/yyyy");
    	return form.format(this.data.getTime());
    }

}

Agenda.java

/**
 * 
 * SisAgenda Versão 0.1
 * 
 * Agenda.java Versão 0.2
 * 
 * @author Paulo Fernandes   
 * paulofernandes[ arroba ]gmail[ . ]com
 * 
 * Histórico de Versão: 
 * --------v 0.1----------
 * - Utilizada a Classe BufferedReader [ BufferedReader ent = new BufferedReader(new InputStreamReader(System.in)); ] 
 * - Utilizada a Classe InputStremReader 
 * - Formatação da String Capturada utilizando o Integer.parseInt(temp)
 * - Variável static temp deixa de existir [ era utilizada para fazer o parseInt ]
 *  
 * --------v 0.2----------
 * - Utilizada a Classe Scanner em substituição de [ java.io.BufferedReader ] e [ java.io.InputStreamReader ]
 * 
 * 
 */
import java.io.IOException;
import java.util.Scanner;
import java.util.GregorianCalendar;

public class Agenda {
    private static String mensagem; 
    
    //metodo main, o que será executado caso ocorra algum problema lança para IOException 
    public static void main(String[] args) throws IOException{
    
    	try {
    	
    		Scanner scan = new Scanner(System.in);
    		
    		System.out.print("Digite um Dia:");
    		int dia = scan.nextInt();
    		
    		System.out.print("Digite um Mes:");
    		int mes = scan.nextInt();
    		
    		System.out.print("Digite um Ano:");
    		int ano = scan.nextInt();
    		
    		System.out.print("Digite a Descricao da Tarefa:");
    		String descricao = scan.next();
    
    		
    		Tarefa t1 = new Tarefa(new GregorianCalendar(ano, mes, dia), descricao);
    	  	if(t1 != null){
    	  		System.out.println("Data Tarefa: " + t1.formataData());
    	  		System.out.println("Descricao da Tarefa: " + t1.getDescricao());
    	  	}
    	  	mensagem = "sucesso.";
    	}
    	catch (Exception e) {
    		System.out.println("Erro: " + e);
    		mensagem = "erro.";
    	}
    	finally {
    		System.out.println("Rodou o Programa com " + mensagem);
    	}
    }
}

PS: Editado com as modificações sugeridas abaixo

Pra formatar data (imprimir direitinho) você pode usar o SimpleDateFormat.

http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html

Mas ele é bem simples, por exemplo:

SimpleDateFormat dia = new SimpleDateFormat("dd/MM/yyyy");

System.out.println("Hoje é dia" + dia.format(new Date() ) );

Eu nunca usei, mas aparentemente tem um parse no SimpleDateFormat também, então daria pra pegar a string nesse formato e pedir que fosse tranformada num Date.

E para passar de GregorianCalendar para Date tem o método “getTime” e “setTime” do Calendar…

Mas claro, funciona igual, né :slight_smile:

Sobre o seu codigo, só para te ajudar mesmo:

 public String formataData(){   
           
        int dia = this.data.get(Calendar.DAY_OF_MONTH);   
        int mes = this.data.get(Calendar.MONTH) + 1;   
        int ano = this.data.get(Calendar.YEAR);   
           
        //String dataCompleta = dia+"/"+mes+"/"+ano;   voce não precisa criar uma String para retornar esse resultado
           
        return ""+dia+"/"+mes+"/"+ano;  // Concatene tudo e use o return. 
    }   

Outra dica seria vc utilizar a classe java.util.Scanner do java 5.0, no lugar de BufferedReader ent = new BufferedReader(new InputStreamReader(System.in));

seria assim:

java.util.Scanner scan = new java.util.Scanner(System.in);

certo, parabéns pelo seu esforço!

[quote=CintiaDR]Pra formatar data (imprimir direitinho) você pode usar o SimpleDateFormat.

http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html

Mas ele é bem simples, por exemplo:

SimpleDateFormat dia = new SimpleDateFormat("dd/MM/yyyy");

System.out.println("Hoje é dia" + dia.format(new Date() ) );

Eu nunca usei, mas aparentemente tem um parse no SimpleDateFormat também, então daria pra pegar a string nesse formato e pedir que fosse tranformada num Date.

E para passar de GregorianCalendar para Date tem o método “getTime” e “setTime” do Calendar…

Mas claro, funciona igual, né :slight_smile: [/quote]

muito obrigado pela dica, já realizei essas implementações.

agora o metodo ficou bem menor

obrigado pela opinião

[quote=FilhoDoRei]Sobre o seu codigo, só para te ajudar mesmo:

 public String formataData(){   
           
        int dia = this.data.get(Calendar.DAY_OF_MONTH);   
        int mes = this.data.get(Calendar.MONTH) + 1;   
        int ano = this.data.get(Calendar.YEAR);   
           
        //String dataCompleta = dia+"/"+mes+"/"+ano;   voce não precisa criar uma String para retornar esse resultado
           
        return ""+dia+"/"+mes+"/"+ano;  // Concatene tudo e use o return. 
    }   

Outra dica seria vc utilizar a classe java.util.Scanner do java 5.0, no lugar de BufferedReader ent = new BufferedReader(new InputStreamReader(System.in));

seria assim:

java.util.Scanner scan = new java.util.Scanner(System.in);

certo, parabéns pelo seu esforço!
[/quote]

opa!

já implantei isso também…

ficou melhor, pois consigo tratar o que é int do que é String

só falta fazer a validação que ainda nem pensei como fazer, e também nem sei

hehe

valeu

PS: programa com as modificações editado no Primeiro POST

Pra fazer validação de data, acho que eu usava o Calendar, ou o SimpleDateFormat, mesmo, creio eu.

Tem um método “setLenient”, que se for setado pra false, dá uns erros se as datas forem esquisitas… Acho que era algo parecido com isso, vixe, nem vou lembrar…!

E vc poderia ler a data inteira de uma vez (mas não sei se vc quer isso, ou se é interessante)

System.out.print("Digite uma data (dd/mm/aaaa):");  
String dataStr = scan.next(); // não sei se  é assim, que seja

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
sdf.setLenient(false); 

Date data = sfd.parse(data); 

teste