exibir data (dd/mm/aaaa)  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
mando82PJ
HelloWorld
[Avatar]

Membro desde: 08/12/2006 00:00:00
Mensagens: 14
Offline

Criei um metodo displayDate para exibir o dia, mes e ano separados por barras normais:
public void displayDate( int dtDate )
{
dtDate = ((datDia)/(datMes)/(datAno));
}

ele compila, porém na hora de executar aparece o seguinte erro:
C:\>java DateTest
Digite o dia: 12
Digite o mes: 10
Digite o ano: 1949

A data correta e: 0Exception in thread "main" java.util.MissingFormatArgumentExc
eption: Format specifier 'd'
at java.util.Formatter.format(Formatter.java:2429)
at java.io.PrintStream.format(PrintStream.java:899)
at java.io.PrintStream.printf(PrintStream.java:800)
at DateTest.main(DateTest.java:29)

aonde está o erro?
e como faço para solicionar?
[WWW] [ICQ]
jaireltonPJ
GUJ Expert
[Avatar]

Membro desde: 06/06/2005 00:00:00
Mensagens: 3276
Offline

Pra te falar a verdade, não entendi absolutamente nada do que esse metodo seu está fazendo... qual foi sua intenção colocando essas barras entre as variaveis? E porque atribuiu o "resultado" à variavel dtDate sendo que você não faz mais nada com ela abaixo? E afinal, o que significa a variavel dtDate?

Se o que você quer é mostrar a data como uma String formatada, dê uma olhada na classe SimpleDateFormat e use a classe Date para representar datas.


http://jairelton.com.br
[WWW] aim icon [ICQ]
esqueletoPJ
JavaTeenager
[Avatar]

Membro desde: 01/04/2005 00:00:00
Mensagens: 157
Offline

kra não recomendo o uso da classe Date vc pode reparar que tem muito metodo deprecado(deprecated) na documentação da classe use a classe Calendar e como no post anterior não entendi muito o objetivo disso. Uma metodo q recebe um valor inteiro e atribui a mesma variavel q recebeu???? Explique-se melhor.


Esqueleto
[WWW] [ICQ]
mando82PJ
HelloWorld
[Avatar]

Membro desde: 08/12/2006 00:00:00
Mensagens: 14
Offline

Vou explicar melhor:
preciso criar uma classe Date que tenha 3 variáveis de instancia:
mês, dia e ano (todas tipo int), essa classe deve ter um construtor que inicializa as 3 variaveis de instancia.
Fazer um metodo set e um get para cada variavel de instancia.
Fazer um metodo displayDate (citado abaixo) que exiba o mes, dia e ano separados por barras normais (/); e por fim uma classe DateTest para testar a classe Date.

Vou colar as duas classes:
public class Date
{
private int datDia;
private int datMes;
private int datAno;
private int dtDate;

public Date( int dia, int mes, int ano )
{
datDia = dia;
datMes = mes;
datAno = ano;
}

public void setDatDia( int dia )
{
datDia = dia;
}

public void setDatMes( int mes )
{
datMes = mes;
}

public void setDatAno( int ano )
{
datAno = ano;
}

public int getDatDia()
{
return datDia;
}

public int getDatMes()
{
return datMes;
}

public int getDatAno()
{
return datAno;
}

public void displayDate( int dtDate )
{
dtDate = ((datDia)/(datMes)/(datAno));
}

public int getDisplayDate()
{
return dtDate;
}

}


import java.util.Scanner;

public class DateTest
{

public static void main( String args[] )
{

int dtDia;
int dtMes;
int dtAno;

Date date = new Date( 12, 02, 2006 );

Scanner input = new Scanner( System.in );

System.out.print( "Digite o dia: " );
dtDia = input.nextInt();
System.out.print( "Digite o mes: " );
dtMes = input.nextInt();
System.out.print( "Digite o ano: " );
dtAno = input.nextInt();
//date.displayDate( dtDia, dtMes, dtAno );

date.setDatDia( date.getDatDia() );
date.setDatMes( date.getDatMes() );
date.setDatAno( date.getDatAno() );

System.out.printf( "\nA data correta e: %d%d%d\n", dtDia/dtMes/dtAno );


}

}
[WWW] [ICQ]
jaireltonPJ
GUJ Expert
[Avatar]

Membro desde: 06/06/2005 00:00:00
Mensagens: 3276
Offline

Não seria isso?



kra não recomendo o uso da classe Date vc pode reparar que tem muito metodo deprecado(deprecated) na documentação da classe use a classe Calendar


Na realidade a classe Date em si não está marcada como deprecated, e ainda é a classe recomendada para representação de datas, os métodos deprecated da classe são devidos as duas funcionalidades que ela tinha inicialmente, de manipular os campos da data individualmente e de formatar a data, essa duas funcionalidades foram transferidas para a classe Calendar e DateFormat, mas somente essas duas funcionalidades, não a de representar a data, o que não é a função de Calendar.


http://jairelton.com.br
[WWW] aim icon [ICQ]
iktuzPJ
Virtual Machine Man
[Avatar]

Membro desde: 18/01/2005 00:00:00
Mensagens: 530
Offline

Não seria isto aqui:



Qualquer coisa confere aqui.

T+
[WWW] aim icon [ICQ]
mando82PJ
HelloWorld
[Avatar]

Membro desde: 08/12/2006 00:00:00
Mensagens: 14
Offline

apareceu o seguinte erro:


C:\>java DateTest

A data correta e: 12/2/2006 Exception in thread "main" java.util.MissingFormatArgumentException: Format specifier 's'
at java.util.Formatter.format(Formatter.java:2429)
at java.io.PrintStream.format(PrintStream.java:899)
at java.io.PrintStream.printf(PrintStream.java:800)
at DateTest.main(DateTest.java:9)


seria o erro causado pela declaração int das variáveis datDia, datMes e datAno?
[WWW] [ICQ]
mando82PJ
HelloWorld
[Avatar]

Membro desde: 08/12/2006 00:00:00
Mensagens: 14
Offline

alguem sabe???
[WWW] [ICQ]
pedrobuskoPJ
Virtual Machine Man
[Avatar]

Membro desde: 14/11/2006 00:00:00
Mensagens: 677
Offline

vc fez alguma das alterações sugeridas pelo pessoal???

posta seu codigo atual....

pq no anterior, o seu metodo displayDate() noa vai funcionar nunca...

soh um toque, o java ja possui a classe Date, mude o nome da sua classe....
[WWW] [ICQ]
mando82PJ
HelloWorld
[Avatar]

Membro desde: 08/12/2006 00:00:00
Mensagens: 14
Offline

ai vai o código atual
class Date
public class Date
{
private int datDia;
private int datMes;
private int datAno;

public Date( int dia, int mes, int ano )
{
datDia = dia;
datMes = mes;
datAno = ano;
}

public void setDatDia( int dia )
{
datDia = dia;
}

public void setDatMes( int mes )
{
datMes = mes;
}

public void setDatAno( int ano )
{
datAno = ano;
}

public int getDatDia()
{
return datDia;
}

public int getDatMes()
{
return datMes;
}

public int getDatAno()
{
return datAno;
}

public String displayDate()
{
return datDia+"/"+datMes+"/"+datAno;
}

}


class DateTest
public class DateTest
{

public static void main( String args[] )
{

Date date = new Date( 12, 02, 2006 );

System.out.printf( "\nA data correta e: %s %s %s\n", date.displayDate() );

}

}


é um exercicio de um livro, ele pede pra criar as classes..
[WWW] [ICQ]
pedrobuskoPJ
Virtual Machine Man
[Avatar]

Membro desde: 14/11/2006 00:00:00
Mensagens: 677
Offline

troque



em Java2



eu aqui não tenho o Java5 pra poder testar o seu printf, mas o lance eh q vc esta tentando mostrar 3 String usando %s 3 vezes...porem o seu metodo displayDate() soh retorna 1 String....raciocinando dessa forma o q vc pode tentar tb eh:



lembrando q isso eu nao consigo testar aqui, mas pelo seu erro, deve funcionar...
[WWW] [ICQ]
mando82PJ
HelloWorld
[Avatar]

Membro desde: 08/12/2006 00:00:00
Mensagens: 14
Offline

funcionou, usei o último código.
obrigado!
[WWW] [ICQ]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team