elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  illegal forward reference
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: illegal forward reference  (Leído 1,814 veces)
juligarc10

Desconectado Desconectado

Mensajes: 47


Ver Perfil
illegal forward reference
« en: 5 Marzo 2019, 13:47 pm »

Hola amigos, tengo un código con un array que almacena objetos de otra clase. Este array tiene que ser estático para ir asociando cada objeto a su correspondiente posición en el array. Pero cuando declaro que el array es estático me da el error illegal forward reference. No se como solucionarlo. Aquí el código:

Código:
package IU;
import core.Jugador;

public class Domino {
   
   
    public static Jugador []njugadores=new Jugador[jugadores];
    private static int jugadores;
   
    public static void inicioPartida() {
        jugadores=ES.pideNumero("¿Cuántas personas jugaran?");

        for(int i=0;i<jugadores;i++){
            String nombre=ES.pideCadena("Introduzca el nombre del jugador");
            Jugador juga=new Jugador(nombre, 0, 0);
            njugadores[i]=juga;
        }
}
   
}

Hay varias clases implementadas, entre ellas, la clase jugador, la cual importo previamente en esta.


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: illegal forward reference
« Respuesta #1 en: 5 Marzo 2019, 14:47 pm »

Estás creando el array con N elementos, siendo N = jugadores. El problema es que jugadores no tiene valor ene se punto. Lo que tendrías que hacer es que nJugadores no tenga valor (null), y en el método inicioPartida le das valor con new, una evz sepas ya el número de jugadores.
Podrías ahorrarte incluso la variable "jugadores", ya que para saber el numero de jugadores, te llegaría con hacer "nJugadores.length"


En línea

spcruzaley

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: illegal forward reference
« Respuesta #2 en: 8 Marzo 2019, 21:17 pm »

Que tal juligarc10

En efecto, hay que tomar en cuenta los comentarios de ivancea96.

Adicional a ello, veo unos temas:
  • La variable jugadores deberia estar antes de la declaracion de tu arreglo de jugadores.
  • Esta variable, al ser estatica y al no darle valor, toma un valor por defecto de 0
  • Tu arreglo de jugadores tiene una capacidad de cero elementos (Por el punto anterior)

Mi recomendacion es que utilices mejor una lista (ArrayList) para almacenar a tus jugadores, el ArrayList es un arreglo dinamico, lo cual indica que no importa los elementos que vayas a guardar, esta lista "crece bajo demanda" asi no tienes que preocuparte por darle el tamaño especifico.

Sin embargo, puedes hacer lo que comenta ivancea96, hacer el new una vez que tengas el numero de jugadores, aunque con mi ejemplo ya no seria necesario.

Tu codigo podria quedar algo mas o menos asi:

Código
  1. public static List<Jugador> njugadores = new ArrayList<>();
  2.  
  3.    public static void inicioPartida() {
  4.        int jugadores = ES.pideNumero("¿Cuántas personas jugaran?");
  5.  
  6.        for (int i = 0; i < jugadores; i++) {
  7.            String nombre = ES.pideCadena("Introduzca el nombre del jugador");
  8.            njugadores.add(new Jugador(nombre, 0, 0));
  9.        }
  10.    }
  11.  
  12.    //En caso de que quieras iterar la lista de Jugadores para obtener sus valores.
  13.    public static void iterarSobreJugadores(List<Jugador> jugadores) {
  14.        for (Jugador jugador: jugadores) {
  15.            System.out.println(jugador.getNombre());
  16.            System.out.println(jugador.getOtroAtributo());
  17.        }
  18.    }
  19.  


Saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Illegal disc???
Software
The Ghost 3 2,580 Último mensaje 1 Febrero 2005, 20:19 pm
por 182065
Guaranteeing Forward Progress
Programación C/C++
wachi 0 1,443 Último mensaje 6 Marzo 2012, 16:49 pm
por wachi
Carga de DLLs Forward
Ingeniería Inversa
paulagarcum 4 4,293 Último mensaje 7 Noviembre 2013, 00:33 am
por paulagarcum
Forward http/s request.
Hacking
xustyx 4 3,199 Último mensaje 30 Julio 2014, 18:47 pm
por xustyx
Forward declaration generator
Programación C/C++
HardForo 8 3,310 Último mensaje 26 Abril 2016, 08:26 am
por fary
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines