我刚刚学习了优先级队列,并且认为我会尝试使用类似的界面来表现它.
代码片段:
import java.util.PriorityQueue;
class kinga implements Comparable<Double> {
double time=909.909;
double d;
public kinga(double a) {
this.d=a;
}
public int compareTo(Double d) {
return Double.compare(d, time);
}
public static void main(String arg[]) {
PriorityQueue<kinga> r=new PriorityQueue<kinga>();
r.add( new kinga(4545.45));
r.add( new kinga(45.4));
r.add( new kinga(1235.45));
System.out.println(r.poll()+" "+r.poll()+" "+r.poll());
}
}
Run Code Online (Sandbox Code Playgroud)
它编译但在线程"main"中 给出了Exception java.lang.ClassCastException: kinga cannot be cast to java.lang.Double.
这里有什么问题.有人能告诉我可比性和优先级队列的工作原理吗?
public int X1[]=new int[1001];
public int X2[]=new int[1001];
public int Xj;
public double R[]=new double[1001];
public double[] Generate(int seed1,int seed2)
{
X1[0]=seed1;
X2[0]=seed2;
for(int j=0;j<2;j++)
{
X1[j+1]=(40014*X1[j])%(2147483563);
X2[j+1]=(40629*X2[j])%2147483399;
System.out.println(X1[j+1]+" "+X2[j+1]);
Xj=Math.abs(X1[j+1]-X2[j+1]);
Xj=Xj%2147483562;
System.out.println(Xj+" "+j);
if(Xj>0)
{ R[j]=Xj/2147483563;}
else if(Xj==0)
{ R[j]=2147483562/2147483563;}
System.out.println(R[j]+" "+j);
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,当我尝试打印R []的元素时,它只是打印0.可能有人告诉我什么是错的?我把out.println语句作为一种调试代码的方式.但是他们打印了所需的值.