Class data para aparecer em todas as telas

6 respostas
B

Bom dia, estou vendo alguns videos aulas sobre java e em um dos videos mostra como criar uma class data com metodo le_data mas infelizmente os getDay, Month, Year aparecem riscados e nao consigo compilar, segue abaixo o codigo fonte:

package utilitarios;
import java.util.Date;

public class data {

String dia, mes, ano, dia_semana;

public void le_data()
    {
        Date data   = new Date();
        dia         = ""+data.getDate();
        mes         = ""+data.getMonth();
        ano         = ""+(1900 + data.getYear());
        dia_semana  = ""+data.getDay(); 
    }

}

O erro :

Ouvindo em javadebug
Não foi possível enviar o ponto de interrupção LineBreakpoint Exif.java : 15, razão: O ponto de interrupção está configurado fora de qualquer classe.
Inválido LineBreakpoint Exif.java : 15
Executando programa do usuário
LineBreakpoint data.java : 24 enviado com êxito.
Depurador interrompido em código-fonte não compilável.
Thread main parada em data.java:18.
MethodBreakpoint [utilitarios.data].le_data ‘()Lvoid;’ enviado com êxito.
MethodBreakpoint [utilitarios.data].le_data ‘()Lvoid;’ enviado com êxito.

E pra falar a verdade desde ontem estou tentando descobrir o erro e nao consigo criar a tal class compilando certinho…Me ajudem…Por favor.

6 Respostas

S

Olá, primeiro por favor utilize a tag code. Facilita muito a analise.

Agora ao problema:

Seu programa nao tem o metodo main. Adiciona isso ao codigo:

public static void main(String[] args) {
		data d = new data();
		d.le_data();
		System.out.println(d.dia);
		System.out.println(d.mes);
		System.out.println(d.ano);
		System.out.println(d.dia_semana);
	}

O fato dos metodos estarem riscados significa que ele(s) esta(o) deprecated. Significa que o seu uso não é encorajado.

Tente fazer assim:

package utilitarios; 

import java.util.GregorianCalendar;

public class data {

	String dia, mes, ano, dia_semana;

	public void le_data() {
		GregorianCalendar calendario = new GregorianCalendar();
		dia = "" + calendario.get(GregorianCalendar.DATE);
		mes = "" + calendario.get(GregorianCalendar.MONTH);
		ano = "" + calendario.get(GregorianCalendar.YEAR);
		dia_semana = "" + calendario.get(GregorianCalendar.DAY_OF_WEEK);
	}
	
	public static void main(String[] args) {
		data d = new data();
		d.le_data();
		System.out.println(d.dia);
		System.out.println(d.mes);
		System.out.println(d.ano);
		System.out.println(d.dia_semana);
	}
}

E só mais uma coisa, sempre declare sua classe com a primeira letra em maiusculo. Ao inves de "data" coloque "Data". De uma olhada nisso aqui http://www.tiexpert.net/programacao/java/nomenclatura.php

B

Bom dia amigo Sem Nome tentei a segunda opcao mas nao ta dando certo:

import java.util.GregorianCalendar;
public class Data
{
    String dia, mes, ano, dia_semana;
    
    public void le_data();
    {
        GregorianCalendar calendario = new GregorianCalendar();
        dia         = "" + calendario.get(GregorianCalendar.DATE);
        mes         = "" + calendario.get(GregorianCalendar.MONTH);
        ano         = "" + calendario.get(GregorianCalendar.YEAR);
        dia_semana  = "" + calendario.get(GregorianCalendar.DAY_OF_WEEK); 
    }
    public static void main (String [] args)
    {
        Data d = new Data();
        d.le_data();
        System.out.println(d.dia);
        System.out.println(d.mes);
        System.out.println(d.ano);
        System.out.println(d.dia_semana);
    }
}
o erro é o seguinte:

init:
Deleting: C:\Estoque\build\built-jar.properties
deps-jar:
Updating property file: C:\Estoque\build\built-jar.properties
Compiling 1 source file to C:\Estoque\build\classes
warning: [options] bootstrap class path not set in conjunction with -source 1.6
C:\Estoque\src\Data.java:6: error: missing method body, or declare abstract
public void le_data();
1 error
1 warning
C:\Estoque\nbproject\build-impl.xml:626: The following error occurred while executing this line:
C:\Estoque\nbproject\build-impl.xml:245: Compile failed; see the compiler error output for details.
FALHA NA CONSTRUÇÃO (tempo total: 0 segundos)

S
Bulldog:
Bom dia amigo Sem Nome tentei a segunda opcao mas nao ta dando certo:
import java.util.GregorianCalendar;
public class Data
{
    String dia, mes, ano, dia_semana;
    
    public void le_data();
    {
        GregorianCalendar calendario = new GregorianCalendar();
        dia         = "" + calendario.get(GregorianCalendar.DATE);
        mes         = "" + calendario.get(GregorianCalendar.MONTH);
        ano         = "" + calendario.get(GregorianCalendar.YEAR);
        dia_semana  = "" + calendario.get(GregorianCalendar.DAY_OF_WEEK); 
    }
    public static void main (String [] args)
    {
        Data d = new Data();
        d.le_data();
        System.out.println(d.dia);
        System.out.println(d.mes);
        System.out.println(d.ano);
        System.out.println(d.dia_semana);
    }
}
o erro é o seguinte:

init:
Deleting: C:\Estoque\build\built-jar.properties
deps-jar:
Updating property file: C:\Estoque\build\built-jar.properties
Compiling 1 source file to C:\Estoque\build\classes
warning: [options] bootstrap class path not set in conjunction with -source 1.6
C:\Estoque\src\Data.java:6: error: missing method body, or declare abstract
public void le_data();
1 error
1 warning
C:\Estoque\nbproject\build-impl.xml:626: The following error occurred while executing this line:
C:\Estoque\nbproject\build-impl.xml:245: Compile failed; see the compiler error output for details.
FALHA NA CONSTRUÇÃO (tempo total: 0 segundos)

Tira aquele ; da declaração do metodo. Você só usa ; em declaracao de metodo quando ele for abstract e quando você for fazer assim o metodo não possui um corpo.

B

Companheiro deu certinho agora, so tem um probleminha o GregorianCalendar.MONTH retornou mes 04 porq acho q ele conta de 0 a 11, como faço para retornar o mes correto que é 5…?

S

Sim, ele vai de 0 a 11. É só incrementar 1 nele.

Ficaria assim:

mes = "" + (calendario.get(GregorianCalendar.MONTH) + 1);

Lembre-se que se você tentar colocar mes = "" + 1 + (calendario.get(GregorianCalendar.MONTH); ele imprimirá 14 pois apartir do ponto em que você coloca um “” ele já trata como uma String e “1” + “4” vai retornar “14”. Se por entre parenteses, eles serao os primeiros a serem executados, realizando a soma e depois concatenando.

B

RESOLVIDO…MUITO OBRIGADO.

Criado 11 de maio de 2012
Ultima resposta 11 de mai. de 2012
Respostas 6
Participantes 2