当我编译时,它说在 deque java 中找不到符号,我也不知道为什么 pushleft 包含这一行 left = (left+1) % queue.length;

when I compile, it said cannot find symbol in deque java and I also dont know why dose pushleft contain this line left = (left+1) % queue.length;

    public class DequeCyclic implements Deque{
        private int left, right, size, capacity;
        private Object[] queue;
        //Constructing an empty Queue
        //@param s is the final size of the array
 
    public DequeCyclic(final int s) {
        left= right = size = 0;
        queue = new Object[s];
        capacity = s;
        
    }

    public boolean isEmpty() {
        return (size == 0);
    }
    public void pushLeft(Object c) throws Overflow{
        if (isFull()) {
            throw new Overflow ("the queue is full");
        }
        else if (left == 0 && right == 0 && size ==0) {
            queue[0] = c;
        }
        
        else {
            left = (left+1) % queue.length;
            queue[left] = c;
        }
        size++;
        }
    public static void main(String[] args){
        DequeCyclic[]  ab = new DequeCyclic[10];
        ab.isEmpty();//this is the problem
        }
    }

当我运行这个的时候,我不明白为什么它给了我那个 DequeCyclic.java:115: 错误: 找不到符号 ab.isEmpty(); ^ 符号:方法 isEmpty() 位置:DequeCyclic[] 类型的变量 ab 1 个错误 我也想知道为什么 pushLeft 有这条线 左 = (左+1) % queue.length;

你的问题在这里:

DequeCyclic[] ab = new DequeCyclic[10];

这条线是做什么的? 它用名称 ab.

初始化一个 DequeCyclic 的数组(大小=10)

您可能想要的是:

DequeCyclic ab = new DequeCyclic(10);

你用参数10调用DequeCyclic的构造函数,赋值给变量ab

接下来,left = (left+1) % queue.length;做什么?

left+1 < queue.length,相当于left++。 否则,作为 left+1 == queue.length,由于模运算符,left 将为零。