【问题标题】:Priority Queue implemented Heap优先队列实现堆
【发布时间】:2017-04-09 08:58:47
【问题描述】:

嗨,所以我想按从大到小的降序排列优先级队列实现堆,我想用指数来实现。所以我完成了我的堆和优先队列类,但现在在制作我的类时我收到一个错误提示

xponents.java:66: error: invalid method declaration; return type required
public Exponent(int num, int exponent, int x)

我不知道我哪里出错了

  public class Exponents implements Comparable<Exponents>
{
   private int num;
   private int exponent;
   private int x;

   public Exponents(int num, int exponent, int x)
   {
      this.num = num;
      this.exponent = exponent;
      this.x = x;
   }
   public int Answer()
   {
      int x = Math.pow(num,exponent);
      return x;
   }

    public String toString()
   {
      String s = ("Exponent: " + exponent + "\n Number: "+ num + "\nYour x is: )" + x);
      return s;
   }
   public int compareTo(Answer e)
   {
      return this.x - o.x;
   }
}

由于拼写错误,问题已解决,现在我收到更多错误,我不确定我写错了什么:

Exponents.java:83: error: cannot find symbol
   public int compareTo(Answer e)
                    ^
  symbol:   class Answer
  location: class Exponents



Exponents.java:74: error: incompatible types: possible lossy conversion from double to int
      int x = Math.pow(num,exponent);


                  ^
Exponents.java:85: error: cannot find symbol
      return this.x - o.x;
                  ^
  symbol:   variable o
  location: class Exponents
3 errors

【问题讨论】:

    标签: java compiler-errors heap priority-queue comparable


    【解决方案1】:

    您的构造函数中有错字。您的类名为Exponents,但在您的构造函数中,它显示为Exponent。它成为无效的方法声明,因为它正在寻找返回数据类型,因为您创建的“构造函数”的名称与类的名称不同。

    编辑:

    1. 您没有班级名称Answer
    2. 您不能将 double 隐式转换为 int。您可以使用Math.pow(num,exponent).intValue()
    3. 在方法或类的范围内没有名为 o 的变量。

    【讨论】:

    • 我修复了它,但它给了我更多错误,不知道我哪里出错了,
    • 谢谢,我已经修复了它们,但是谢谢,虽然我让它工作了,现在我正在研究我的主要方法:D
    猜你喜欢
    • 1970-01-01
    • 2021-12-20
    • 2018-08-10
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    相关资源
    最近更新 更多