无法从包外访问java.awt.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 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();
}
}
}

上面的代码来自https://rosettacode.org/wiki/Averages/Simple_moving_average#Java

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

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

如何解决

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

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


仅供改进:对于循环FIFO的实现,这里有一些信息

  • 是否有一个固定大小的队列可以删除多余的元素?

  • 循环队列的基本实现

这可能会产生类似的效果

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

最新更新