2017-05-20 16 views
0

こんにちは、私はそこにネストされたクラスのmulitple層を持っているクラスがあり、私はそれが動作しない理由が不思議でした。何らかの理由で私は新しいStackNodeを作成することができません。私はそれがなぜあるのだろうと思っていました。複数のネストされたクラスJava

public class MultiStack { 
    Stack1[] arr; 
    int lim,numplate,index; 

    MultiStack(int limit, int total) { 
     lim = limit; 
     numplate = total; 
     int ssize =0; 
     if(total%lim==0) { 
      ssize = total/lim; 
     } else { 
      ssize = (total/lim) +1; 
     } 
     arr = new Stack1[ssize]; 
    } 

    class Stack1 { 
     StackNode top; 
     int size; 

     class StackNode{ 
      StackNode next; 
      int value; 
     } 
    } 
    public void push(int value){ 
     if(arr[index].size < lim) { 
      push1(index); 
     } 
    } 
    public void push1(int index) { 
     arr[index].size++; 
     StackNode cur = new StackNode(); //here is my issue 
     cur.next = arr[index].top; 
     arr[index].top = cur; 
    } 
} 
+3

あなたは「動作しない」に手の込んだてもらえますか? – Siguza

+2

また、内部クラスの[静的]性(https://stackoverflow.com/q/70324)も知っていますか? – Siguza

+0

私は新しいStackNode()を作成することができません – randyMoss1994

答えて

1

どちらもクラスStack1もクラスStackNode静的です。

したがって、インスタンス化するには、周囲のクラスのインスタンスが必要です。

あなたはMultiStackの対象であるStackNodeクラスをインスタンス化しよう:

public void push1(int index) { 
    arr[index].size++; 
    Stack1.StackNode cur = new Stack1().new StackNode(); // here is my issue 
    cur.next = arr[index].top; 
    arr[index].top = cur; 
} 
関連する問題