Java - error inicializar pila de objetos en java

 
Vista:

error inicializar pila de objetos en java

Publicado por GRin (2 intervenciones) el 03/05/2018 02:07:41
Buenass, ayudenme por fa con esto

He creado una pila de objetos para guardar en cada posición de la pila un valor, x, y todos enteros, al momento de inicializarla me sale este error:

n: 3
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at sudokufada.Pila.<init>(Pila.java:30)
at sudokufada.EjemploPila.<init>(EjemploPila.java:15)
at sudokufada.EjemploPila.main(EjemploPila.java:32)

mi codigo es:

clase Pila:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
private int top, n;
private int fila, col;
datoIngresado objetosJugada[]=new datoIngresado[n];
 
 
public Pila(int n) {
 
    top = -1;
    this.n = n;
 
    System.out.println("n:  " + n);
    for (int i=0;i<n;i++){
        objetosJugada[i]= new datoIngresado(0,0,0);  ///////////error aquí///////////////////////////////////
    }
 
}
///////////////////////////////////////////////otras funciones de la clase pila/////////////////////////////////////////////////////////
 
 
public boolean empty(){
    if(top==-1)
        return true;
    else
        return false;
}
 
public boolean full(){
    return top==n-1;
}
 
public void push(int valor, int fil, int col){
    if (full())
        System.out.println("overflow");
    else{
        top++;
        //S[top]=x;
            System.out.println("Tp: "+top);
             objetosJugada[top]= new datoIngresado(valor,fil,col);
    }
}
 
public int [] pop(){
 
    int [] result1Pos = new int [3];
 
    if(empty()){
        System.out.println("underflow");
 
        //return -1;
    }
    else{
        top--;
        //return objetosJugada[top+1];
            result1Pos [0]=  objetosJugada[top+1].getValor();
            result1Pos [1]=  objetosJugada[top+1].getFila();
            result1Pos [2]=  objetosJugada[top+1].getCol();
    }
 
    return result1Pos;
}





--------------------------------------------------
clase dato ingresado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 */
public class datoIngresado {
 
    int valor = 0;
    int posFila=0;
    int posCol=0;
 
public datoIngresado(int vvalor,  int posf, int poscol) {
 
     valor= valor;
     posFila=posf;
     posCol=poscol;
 
    }
------------------------------------------------
main:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class EjemploPila {
 
    public EjemploPila() {
    	Pila pilita = new Pila(3);
 
    	pilita.push(5,2,2);
    	pilita.push(3,2,1);
    	pilita.push(7,2,0);
 
    	System.out.println("Sale: "+pilita.pop());
    	System.out.println("Sale: "+pilita.pop());
    	System.out.println("Sale: "+pilita.pop());
    	System.out.println("Sale: "+pilita.pop());
    	System.out.println("Sale: "+pilita.pop());
    	System.out.println("Sale: "+pilita.pop());
    }
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        new EjemploPila();
    }
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kingk
Val: 15
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

error inicializar pila de objetos en java

Publicado por kingk (108 intervenciones) el 03/05/2018 19:21:35
Hola, el array de objetos datoIngresado que defines es equivalente a este:

datoIngresado objetosJugada[]=new datoIngresado[0];

Por ello no puedes instanciar los elementos de tu array. Debes redimensionar tu array dentro del constructor de la clase.
Seria así:

1
2
3
4
5
6
7
8
9
10
11
public Pila(int n) {
 
    top = -1;
    this.n = n;
 objetosJugada=new datoIngresado[n];
    System.out.println("n:  " + n);
    for (int i=0;i<n;i++){
        objetosJugada[i]= new datoIngresado(0,0,0);
    }
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar