0
public class Queue {

    public class ArrayQueue
    {
        Object store[];
        int front,rear;
        static final int MAX = 100;

        public ArrayQueue()
        {
            store = new Object[MAX];
            front = rear = 0;
        }

        public void EnQueue(Object o)        
        {
            if((rear +1)%MAX!=front)
            {
                store [rear] = o;
                rear = (rear + 1) % MAX;
            }

        }

        public Object dequeue() throws Exception
        {
            if( empty())
            {
                throw new Exception();
            }
            else
            {
                Object data = store[front];
                store [front] = null;
                front = (front+1)%MAX;
                return data;
            }
        }
    }

    public static void main (String args)
    {
        main();
    }

        public static void main()
        {
        String choice;
        Scanner input = new Scanner(System.in);
        System.out.println("A.EnQueue");
        System.out.println("B.DeQueue");
        System.out.println("C.Print");
        System.out.println("D.MakeNull");
        System.out.println("E.Empty");
        System.out.println("F.Full");
        System.out.println("G.Exit");

        choice = input.nextLine();
        switch(choice){
            case "A":
                System.out.println("Enter a character");
                char x;
                x= input.next().charAt(0);
                // ArrayQueue.EnQueue(x);
                System.out.println(x+"was added to the queue");

        }
    }
    }
}

「ArrayQueue.EnQueue(x);」である76行目でエラーが発生する静的メソッドとは実際には静的メソッドに問題があります。EnQueue 関数を static にした場合、エラーもあります。なぜですか? このエラーを修正するにはどうすればよいですか。エラーは非静的メソッド エンキュー (オブジェクト) は静的コンテキストから参照できません

4

2 に答える 2

6

メッセージは非常に明確です。public void EnQueueは静的メソッドではないため、静的メソッドとして呼び出すことはできません。

クラス内の非静的変数を参照しようとしているため、単純に静的メソッドに変換することはできません。

于 2013-09-15T01:39:09.947 に答える