Srs, bom dia. Relutei em enviar esta mensagem mas não consigo resolver este exercício. Poderiam me ajudar ? É o 3.15 do Java Como Programar 6. Eu quero que o programa solicite ao usuário que digite a dia, mês e ano e depois o programa exibe como dia/mes/ano. Desde já agradeço:
/**3.15 - Crie uma classe Date que inclui três informações como variáveis de instância - um mês(tipo int), um dia(tipo int) e um ano(tipo int). Sua classe deve ter um construtor que inicializa as três variáveis de instância e assumir que os valores fornecidos são corretos. Forneça um método set e um get para cada variável de instância. Forneça um método dysplayDate que exibe o mês, o dia e o ano separados por barras normais (/). Escreva um aplicativo de teste chamado DateTest que demonstra as capacidades da classe Date.
*/
import java.util.Scanner;
public class Date
{
Scanner input = new Scanner(System.in);
private int dia;
private int mes;
private int ano;
public Date(int d, int m, int a)
{
int dia = d;
int mes = m;
int ano = a;
}
public void setDia(int d)
{
System.out.printf("Digite o dia: ");
int dia = input.nextInt();
dia = d;
}
public int getDia()
{
return dia;
}
public void setMes(int m)
{
System.out.printf("Digite o mes: ");
int mes = input.nextInt();
mes = m;
}
public int getMes()
{
return mes;
}
public void setAno(int a)
{
System.out.printf("Digite o ano: ");
int ano = input.nextInt();
ano = a;
}
public int getAno()
{
return ano;
}
public int getDisplayDate()
{
System.out.printf("\nDia de hoje: %d/%d/%d\n", getDia(), getMes(), getAno());
int displayDate = input.nextInt();
return displayDate;
}
}
public class DateTest
{
public static void main (String args [])
{
Date date = new Date (0,0,0);
date.getDisplayDate();
}
}
private int dia;
private int mes;
private int ano;
public Date(int d, int m, int a)
{
setDia(d);
setMes(m);
setAno(a);
}
public void setDia(int d)
{
dia = d;
}
public int getDia()
{
return dia;
}
public void setMes(int m)
{
mes = m;
}
public int getMes()
{
return mes;
}
public void setAno(int a)
{
ano = a;
}
public int getAno()
{
return ano;
}
public void displayDate()
{
System.out.printf("%d/%d/%d", getDia(), getMes(), getAno());
}
Refiz o programa e ele rodou. O que gostaria é de que o usuário digitasse a data(dia/mes/ano), e isso eu não consegui. Não poderia fazê-lo na classe Date ?
Então, o propósito da classe Date é representar uma data. Ela não tem que se preocupar com o que o usuário vai digitar entendeu? Quem vai pegar os dados do usuário é outra classe, onde a lógica em si deve ser implementada. Pode ser uma classe chama TesteDate por exemplo.
[code]public class TesteDate {
public static void main( String[] args ) {
int dia = 0;
int mes = 0;
int ano = 0;
Scanner s = new Scanner( System.in );
System.out.println( "Digite o dia: " );
dia = Integer.parseInt( s.nextLine() );
System.out.println( "Digite o mês: " );
mes = Integer.parseInt( s.nextLine() );
System.out.println( "Digite o ano: " );
ano = Integer.parseInt( s.nextLine() );
Date d = new Date( dia, mes, ano );
System.out.println( "A data é: " + d.displayDate() );
}
public Date(int d, int m, int a) {
this.dia = d;
this. mes = m;
this. ano = a;
}[/quote]
Eu particularmente uso o this apenas quando ocorre shadowing, por exemplo:
public Date( int dia, int mes, int ano ) {
this.dia = dia;
this.mes = mes;
this.ano = ano;
}
Como as variáveis no exemplo do Paulo tem nomes diferentes, eu não acredito que haja utilidade, apenas se o objetivo for deixar o código mais legível. Se estiver usando uma IDE, normalmente variáveis de instância ficam de outra cor. No NetBeans é verde. Enfim, isso vai do gosto do freguês.
O objetivo é exatamente esse: legibilidade. É uma boa ideia sempre usar o this para deixar sempre bem claro de onde você está obtendo os seus valores (: É só uma prática legal com a qual eu concordo