小编Joh*_*ter的帖子

Java优先级队列和类似的接口

我刚刚学习了优先级队列,并且认为我会尝试使用类似的界面来表现它.

代码片段:

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.

这里有什么问题.有人能告诉我可比性和优先级队列的工作原理吗?

java priority-queue comparable

7
推荐指数
2
解决办法
2万
查看次数

Array元素的值始终为零

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语句作为一种调试代码的方式.但是他们打印了所需的值.

java arrays

1
推荐指数
1
解决办法
124
查看次数

标签 统计

java ×2

arrays ×1

comparable ×1

priority-queue ×1