我试图(对于学校实验室)创建一个程序,目前只显示数组中的项目(我们使用JGrasp作为我们的IDE,这是必需的部分,因为它要求它所做的项目)。它需要五个类:Employee的超类,定义员工类型的两个子类,测试方法(UseCompany)和FileIO类。
import java.util.*;
public class UseCompany {
public static void main(String[] args) {
System.out.print("Hello");
SalesMan man1 = new SalesMan("John Doe", 12345);
Technician tech1 = new Technician("Jane Doe", 12346);
ArrayList<Employee> company = new ArrayList<Employee>();
company.add(man1);
company.add(tech1);
SalesMan man2 = new SalesMan(1500.00, "Steelport", "Johnny Gat", 14432);
Technician tech2 = new Technician(5, "IT Support", "Kinzie Kensington", 10000);
company.add(man2);
company.add(tech2);
Collections.sort(company);
ArrayList<Employee> temp = company;
FileIO.displayArray(temp); //Line 19, the problem point.
}
}
这是测试方法,这个
public static void displayArray(ArrayList<Employee> list) //Displays array one line at a time
{ //Specialized for Employee class
for (int i=0;i<list.size();i++)
{
if((list.get(i)).getType() == 'T')
{
System.out.println("Name: " + (list.get(i)).getName() + "\tNo.: " + (list.get(i)).getNumber() + "\tType: Technician\tDepartment: " + ((Technician)(list.get(i))).getDepartment() + "\tClearance Level: " + ((Technician)(list.get(i))).getLevel());
}
else if((list.get(i)).getType() == 'S')
{
System.out.println("Name: " + (list.get(i)).getName() + "\tNo.: " + (list.get(i)).getNumber() + "\tType: Salesperson\tTerritory: " + ((SalesMan)(list.get(i))).getTerritory() + "\tTarget: " +((SalesMan)(list.get(i))).formattedTarget());
}
}
}
FileIO中的方法是否应显示行。
我遇到的问题是,虽然它编译得很好,但它会给出错误
UseCompany.java:19:错误:不兼容的类型:List无法转换为ArrayList []
当我尝试在jgrasp中运行它时,指向(temp)。我的老师和我都对它有所了解,并且无法对它做任何事情(他添加了临时的东西)。
但是,如果我使用我编译和运行的蝙蝠在命令行中运行它,它运行得很好! 任何人都可以提供任何关于我为什么在JGrasp中收到此错误的提示,以及可能如何修复它以便我可以继续处理它?</ p>
/**
* This is the superclass Employee.
* It contains the general information for SalesMan and Technician
*/
import java.io.*;
public class Employee implements Comparable, Serializable
{
private String name; // Name of employee
private int number; // Employee number of employee
char typeCode; // What kind of employee is it
/**
* Constructor to create the superclass
* @param nom Name of the employee
* @param number Employee number
*/
public Employee(String nom, int number )
{
name = nom;
this.number = number;
}
public char getType()
{
return typeCode;
}
public int getNumber()
{
return number;
}
public String getName()
{
return name;
}
/**
* compareTo method for comparison of objects
* @param Employee object
* @return An integer to indicate comparison
*/
public int compareTo(Object o)
{
//Compare code
return name.compareTo(((Employee)o).name);
}
/** toString method for printing */
public String toString()
{
String employeeNum = Integer.toString(number);
String str = new String("Name: " + name + "\nEmployee Number: " + employeeNum);
return str;
}
}
有关信息:技术人员添加私有int级别,私有字符串部门,getter和toString Salesman添加私有双目标,私有字符串区域,getter和toString
编辑: 出于某种原因,即使从displayArray方法的调用和实现中删除所有参数并注释掉其全部内容,它似乎需要ArrayList []类型的数据,将错误指向点之间的点FileIO和displayArray()
最终编辑: 谢谢Fildor。事实证明,删除项目文件并重新制作它实际上是解决方案。现在一切都很好。 我希望我或我的老师昨晚在实验室中弄清楚这一点......
答案 0 :(得分:1)
回答而不是评论:
似乎jGrasp在运行时使用了一些过时的类文件。由于我对该IDE缺乏了解,我不知道如何,但我建议对已编译的类进行彻底的清理。
我还建议你写下你自己的答案,描述你做了什么让这个错误消失并接受那个。
答案 1 :(得分:0)
这个问题的答案特别是,在JGrasp中,删除关联的.gpj文件,然后使用相同的文件重新制作它。它应该保存文件的更新版本,没有其他错误。再次感谢Fildor建议这个答案。