iniciar constante

Iniciado por mianrojime, 29 Agosto 2014, 22:23 PM

0 Miembros y 1 Visitante están viendo este tema.

mianrojime

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

engel lex

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?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

mianrojime

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

0vatsug

#3
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 (=java) [Seleccionar]

public class Ejemplo {

private static final String hola;

static {
try {
hola = new java.util.Scanner("System.in").readLine();
} catch (Throwable ex) {
throw new ExceptionInInitializerError("Error al instanciar 'hola'");
}
}

}


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

madara1412

#4
podria ser algo asi ?

Código (java) [Seleccionar]
Scanner X=new Scanner(System.in);
int D=X.nextInt();

la variable no tiene valor asta que pase por el scanner jejeje :P

0vatsug

Cita de: madara1412 en 30 Agosto 2014, 06:51 AM
podria ser algo asi ?

Código (java) [Seleccionar]
Scanner X=new Scanner(System.in);
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.