无法从包外部访问java.awt.Queue

无法从包外部访问java.awt.Queue,java,compiler-errors,queue,Java,Compiler Errors,Queue,java版本:SDK 1.8.0_151 IDE:IDEA IntelliJ import java.awt.Queue; import java.util.LinkedList; public class SimpleMovingAverage { private final Queue<Double> window = new LinkedList<Double>(); private final int period; private do

java版本:SDK 1.8.0_151

IDE:IDEA IntelliJ

import java.awt.Queue;
import java.util.LinkedList;

public class SimpleMovingAverage {
    private final Queue<Double> window = new LinkedList<Double>();
    private final int period;
    private double sum;

    public SimpleMovingAverage(int period) {
        assert period > 0 : "Period must be a positive integer";
        this.period = period;
    }

    public void newNum(double num) {
        sum += num;
        window.add(num);
        if (window.size() > period) {
            sum -= window.remove();
        }
    }

    public double getAvg() {
        if (window.isEmpty()) {return 0.0;} // technically the average is undefined
        return sum / window.size();
    }

    public static void main(String[] args) {
        double[] testData = {1, 2, 3, 4, 5, 5, 4, 3, 2, 1};
        int[] windowSizes = {3, 5};
        for (int windSize : windowSizes) {
            SimpleMovingAverage ma = new SimpleMovingAverage(windSize);
            for (double x : testData) {
                ma.newNum(x);
                System.out.println("Next number = " + x + ", SMA = " + ma.getAvg());
            }
            System.out.println();
        }
    }
}
导入java.awt.Queue;
导入java.util.LinkedList;
公共类SimpleMovingAverage{
私有最终队列窗口=新建LinkedList();
私人最后整修期;
私人双和;
公共SimpleMovingAverage(整数周期){
断言周期>0:“周期必须为正整数”;
这个周期=周期;
}
公共void newNum(双num){
sum+=num;
window.add(num);
if(window.size()>period){
sum-=window.remove();
}
}
公共双getAvg(){
如果(window.isEmpty()){return 0.0;}//从技术上讲,平均值是未定义的
返回sum/window.size();
}
公共静态void main(字符串[]args){
double[]testData={1,2,3,4,5,5,4,3,2,1};
int[]windowSizes={3,5};
用于(int windSize:WindowsSize){
SimpleMovingAverage ma=新的SimpleMovingAverage(windSize);
for(双x:testData){
ma.newNum(x);
System.out.println(“Next number=“+x+”,SMA=“+ma.getAvg());
}
System.out.println();
}
}
}
上面的代码来自

当我创建一个名为SimpleMovingAverage的类并从上述网站复制代码时,会报告一个错误

“java.awt.Queue”在“java.awt”中不是公共的。无法从包外部访问


如何解决它?

您需要
java.util.Queue
而不是
java.awt.Queue
,它可以容纳您想要的任何内容

java.awt
包是关于UI、图形和图像:,
java.awt.Queue
在这里保存
java.awt.Event
元素


仅用于改进:关于循环FIFO的实施,这里有一些信息

这可能会导致

public void newNum(double num) {
    window.add(num);
}

原始源代码,第2行您提供的链接不导入
java.awt.Queue
。这个错误是你一个人的错。我希望你能澄清一下否决票的问题。这个问题既没有重复,也没有问得不好。它定义得很好。你一直在破坏
newNum()
方法。如果他使用
CircularQueue
,无论他在哪里找到它。他在查找
java.util.Queue
时遇到了足够多的麻烦。我看不出有什么关联。这是一个简单的导入问题。不要夸夸其谈。你不知道谁投了反对票,更不用说为什么了,但这个答案中有足够多的错误和无关之处来证明投反对票是合理的。@user207421所以“没有错误、改进和善意的余地了?”?好的,很好