无法从包外部访问java.awt.Queue
java版本:SDK 1.8.0_151 IDE:IDEA IntelliJ无法从包外部访问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
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所以“没有错误、改进和善意的余地了?”?好的,很好