Foro de elhacker.net

Programación => Java => Mensaje iniciado por: mianrojime en 29 Agosto 2014, 22:23 pm



Título: iniciar constante
Publicado por: mianrojime en 29 Agosto 2014, 22:23 pm
Hola a todos y perdón si pregunto algo fuera de lugar, pero es posible en Java crear una constante static sin darle un valor inicial. el valor se lo daría al ejecutar el programa mediante un objeto scanner. Gracias


Título: Re: iniciar constante
Publicado por: engel lex en 29 Agosto 2014, 22:54 pm
siempre es bueno e importante inicializar las variables, aunque estás permitan ser iniciadas sin valor inicial debe hacerse...

aunque no sé que quieres lograr...
cual es el fin que buscas?


Título: Re: iniciar constante
Publicado por: mianrojime en 30 Agosto 2014, 00:03 am
Gracias por responder. Tengo que hacer una practica el juego de hundir la flota, y el tablero puede variar entre un tamaño de 10 x 10 o de 15 x 15 y nos piden que sean constantes he pensado que el jugador cuando se inicia el juego decida el tamaño. Aunque tambien podría ser con los parametros de inicio del juego. GRacias


Título: Re: iniciar constante
Publicado por: 0vatsug en 30 Agosto 2014, 05:34 am
No puedes, ya que la especificación del lenguaje manda que las constantes deben ser inicializadas en la declaración. Lo que puedes hacer es utilizar un bloque estático. Éste bloque se ejecutará cuando el ClassLoader de Java cargue la clase que contiene el bloque estático.

Ejemplo:

Código
  1. public class Ejemplo {
  2.  
  3. private static final String hola;
  4.  
  5. static {
  6. try {
  7. hola = new java.util.Scanner("System.in").readLine();
  8. } catch (Throwable ex) {
  9. throw new ExceptionInInitializerError("Error al instanciar 'hola'");
  10. }
  11. }
  12.  
  13. }

Pero no creo que te sirva de mucho porque la clase será cargada rápidamente por el ClassLoader.


Título: Re: iniciar constante
Publicado por: madara1412 en 30 Agosto 2014, 06:51 am
podria ser algo asi ?

Código
  1. Scanner X=new Scanner(System.in);
  2. int D=X.nextInt();
la variable no tiene valor asta que pase por el scanner jejeje :P


Título: Re: iniciar constante
Publicado por: 0vatsug en 30 Agosto 2014, 14:52 pm
podria ser algo asi ?

Código
  1. Scanner X=new Scanner(System.in);
  2. int D=X.nextInt();
la variable no tiene valor asta que pase por el scanner jejeje :P

Tu ejemplo es válido, pero obviaste el requisito: inicializar una constante luego de declararla. El ejemplo que pones, es una variable normal que se le asigna un dato ingresado por medio de Scanner.

Una constante se identifica por medio de la palabra clave final y se debe inicializar en la declaración de la misma. Aunque se puede utilizar un bloque estático.