【问题标题】:I keep on getting Cannot find Symbol Error when using Comparable使用 Comparable 时,我不断收到找不到符号错误
【发布时间】:2017-04-25 18:46:21
【问题描述】:

我不断收到错误消息,说在尝试编译时找不到符号。这些文件都在同一个文件夹中,我不确定我在哪里出错了。 在这个作业中,我应该编写一个从文件中读取员工列表的程序。该文件的名称将是“Employee.txt”。程序应该将 sorted 数组输出到名为“SortedEmployee.txt”的文件中。我已经完成了堆类。需要帮助。

public class Employee
{
   String id;
   String name;
   String department;
   String position;
   double salary;
   int yos; //Year of Service
   
   //constructor w/ no args
   public Employee()
   {  salary = 0.0;
      id = name = department = position = "";
      yos = 0;
   
   }
   
   //constructor w/ args
   public Employee(String i, String n, String d, String p, double s, int y)
   {
      id = i;
      name = n;
      department = d;
      position = p;
      salary = s;
      yos = y;
   }
   
   public void setID(String i)
   {  id = i;}
   public void setName(String n)
   {  name = n;}
   public void setDepartment(String d)
   {department = d;}
   public void setPosition(String p)
   {position = p;}
   public void setSalary(double s)
   {salary =s;}
   public void setYOS(int y)
   {yos = y;}
   
   public String getID()
   {  return id;}
   public String getName()
   {  return name;}
   public String getDepartment()
   {return department;}
   public String getPosition()
   {return position;}
   public double getSalary()
   {return salary;}
   public int getYOS()
   {return yos;}
   
   
    public String toString()
   {
      String str =  "Emplyee Id: " + id + "\nName: " + name + 
                     "\nDepartment:  " + department + "\nPosition: " + position
                     + "\nSalary: " + salary;
                     
                            
        return str;
    }
     public int compareTo(Employee emp)
{
  int idONE = id.compareToIgnoreCase(emp.id);
  if (idONE != 0)
     return idONE;
  return 0;
}                  
   

}


public class EmployeeCOMP implements Comparable<Employee>{
    @Override
    public int compareTo(Employee emp){
       return this.id.compareToIgnoreCase(emp.id);
    }
} 

这是我不断遇到的错误。

EmployeeCOMP.java:4: error: cannot find symbol
       return this.id.compareToIgnoreCase(emp.id);
                  ^
  symbol: variable id
1 error

【问题讨论】:

    标签: java tree heap comparable


    【解决方案1】:

    this 指的是EmployeeCOMP 的实例,它没有id。在这种情况下,compareTo 方法应该是Employee 类的一部分(不是单独的类):

    public class Employee {
      ...
    
        public int compareTo(Employee emp) {
            return this.id.compareToIgnoreCase(emp.id);  // **this** refers to an Employee instance
        }   
    }
    

    尝试通过单独的类使用表明您可能需要实现Comparator

    【讨论】:

    • 在我的 Employee 类结束时,我已经有一个 public int compareto,我应该保留它并完全删除 EmployeeCOMP 类吗?
    • 这样做会给我带来错误,因为我的 Employee 类中已经有一个 compareto(Employee) 方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 2021-11-28
    • 2013-03-22
    相关资源
    最近更新 更多