有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java找不到符号。peek()

嗨,我的朋友,我正试图窥视一个队列,但编译器一直抛出一个找不到符号的错误

public class HelloWorld{

interface Queue<T> {
Queue<T> enqueue(T ele);
T dequeue();
}

public static class QueueArray<T> implements Queue<T>{

    int top;
    private T[] arr;
    private int total, next;
    public int first;

    public QueueArray()
    {
        arr = (T[]) new Object[2];
        top = 0;
    }

    private void resize(int capacity)
    {
        T[] tmp = (T[]) new Object[capacity];

        for (int i = 0; i < total; i++){
            tmp[i] = arr[(first + i) % arr.length];
        }

        arr = tmp;
        first = 0;
        next = total;
    }

    public QueueArray<T> enqueue(T ele)
    {
        if (arr.length == total) 
        {
            resize(arr.length * 2);
        }
        arr[next++] = ele;
        if (next == arr.length)
        {
            next = 0;
        }
        total++;
        return this;
    }

    public Object peek(){

        if(first > 0 ){
            return arr[first - 1];
        }
        else{
            return null;
        }

    }



    public T dequeue()
    {
        if (total == 0)
        {
            throw new java.util.NoSuchElementException();

        }
        T ele = arr[first];
        if (++first == arr.length)
        {
            first = 0;
        }
        if(--total > 0 && total == arr.length/4) 
        {
            resize(arr.length/2);
        }
        return ele;

    }

} 


 public static void main(String []args){
   Queue<Integer> greeting = new QueueArray<>();

   greeting.enqueue(1).enqueue(2).enqueue(3);

   System.out.println(greeting.dequeue());
   System.out.println(greeting.peek());
   System.out.println(greeting.dequeue());
   System.out.println(greeting.dequeue());
   System.out.println(greeting.dequeue());

 }
}

我不明白当我打电话给警察时会发生什么。peek()拼写也一样。感谢您的帮助


共 (1) 个答案

  1. # 1 楼答案

    将使用接口的类型声明队列实例:

    Queue<Integer> greeting = new QueueArray<>();
    

    因此,在调用peek函数时,编译器将查看接口,而不是具体的QueueArray

    因此,您需要将peek方法添加到接口:

    interface Queue<T> {
        Queue<T> enqueue(T ele);
        T dequeue();
        T peek();
    }