2014-11-13 2 views
0

Я пытаюсь (для школьной лаборатории) создать программу, которая пока покажет элементы в массиве (мы используем JGrasp в качестве нашей среды разработки, это обязательная часть, поскольку он требует проектов, которые он делает). Для этого требуется пять классов: суперкласс для Employee, два подкласса, определяющие типы сотрудников, метод тестирования (UseCompany) и класс FileIO.ArrayList Array Тип несоответствия

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: error: incompatible types: List cannot be converted to ArrayList[]

Когда я пытаюсь запустить его в jgrasp, указывая на (темп). У нас с учителем были трещины в нем, и он ничего не мог с этим сделать (он добавил временные вещи).

Однако, если я запустил его в командной строке, используя бит, созданный для компиляции и запуска, он работает просто отлично! Может ли кто-нибудь дать советы о том, почему я получаю эту ошибку в JGrasp, и, возможно, как ее исправить, чтобы я мог продолжить работу над ней?

/** 
* 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; 
} 
} 

Для информации: техник добавляет частный уровень ИНТА, частный отдел струнного, добытчик, и ToString Salesman добавляет частную двойную цель, частную струнный территории, добытчик, и ToString

Edit: Для некоторых Разумеется, даже после удаления всех аргументов как вызова, так и реализации метода displayArray и комментирования всего его содержимого, кажется, требуются данные типа ArrayList [], указывающие на ошибку в точке между FileIO и displayArray()

FINAL EDIT: Спасибо, Fildor. Как оказалось, удаление файла проекта и его переделка были, по сути, решением. Сейчас все работает отлично. я хочу или я, или мой учитель понял это прошлой ночью в лаборатории ...

+4

_while он компилируется отлично, он дает ошибку_ Это утверждение противоречиво. –

+2

Можете ли вы пометить строку 19 в UseCompany, пожалуйста? – Fildor

+0

Итак, jgrasp думает, что есть ошибка, но javac нет? – Teepeemm

ответ

0

Ответ на этот вопрос, в частности, был в JGrasp, удалите связанный файл .gpj, а затем переделайте его с использованием того же файла. Он должен содержать обновленные версии файлов без дальнейших ошибок. Еще раз спасибо, Fildor, за предложение этого ответа.

1

Ответ вместо комментариев:

Кажется, что jGrasp использует устаревшие файлы классов во время выполнения. Из-за моего незнания этой IDE я не могу сказать, как, но я предлагаю полную очистку скомпилированных классов.

Я также предлагаю вам написать свой собственный ответ, описывая, что вы сделали, чтобы эта ошибка исчезла и принять ее.