2015-10-25 2 views
1

Это для домашнего задания. Тем не менее, я кодировал подавляющую часть моего задания. Есть только этот блокпост. Я также новичок в Java, поэтому моя терминология может быть немного отключена.Как решить: compareTo >> не может найти символ

Так у меня есть 5 типов: Предоставлено учителя:

  • NameInterface, что файл интерфейса для имени
  • имя, которое использует 2 частных Струны, первый & последний, для имени и фамилии
  • StudentInterface, что файл интерфейса для студенческого
  • StudentTest, который является основным методом, используемым для тестирования

В основном, предоставляемый учителем, мне просто нужно исправить compareTo(). Все остальное, как конструкторы, поля и т.д. сделано:

  • Студент, который использует FULLNAME (который является NameInterface) & города Строка

класса Названия имеет CompareTo() переопределение, который использует встроенный в Java в CompareTo сравнить это первый & другой первый

public int compareTo(Object other) 
    { 
    int result = last.compareTo(((Name)other).last); 

    if (result == 0) 
    { 
     // last names are equal; check first 
    result = first.compareTo(((Name)other).first); 
    } // end if 

    return result; 
} // end compareTo 

класс Student имеет CompareTo(), который использует имя класса СотрагеТо сравнить это имя & другое имя по S хорошо, как этот город & другой город

public int compareTo(Object other) 
    { 
    Student localStudent = (Student) other; 
    int result = (fullName.getName()).compareTo((localStudent.getName()).getName()); 

    if (result == 0) 
    { 
     // last names are equal; check first 
    result = city.compareTo(localStudent.getCity()); 
    } // end if 

    return result; 
    } // end compareTo 

Я пытаюсь вызвать СотрагеТо Студента класса в StudentTest, но говорит, что не может найти символ.

StudentInterface si = new Student(); 
    si.setCity("Kingston"); 
    NameInterface ni = new Name("Andrew","Pletch"); 
    si.setName(ni); 

    StudentInterface si2 = new Student(); 
    si2.setCity("Kingston"); 
    NameInterface ni2 = new Name("Aram","Agajanian"); 
    si2.setName(ni2); 
    System.out.println(" compare as (should be +ve) " + si.compareTo(si2)); 

ошибка:

StudentTest.java:27: error: cannot find symbol 
    System.out.println(" compare as (should be +ve) " + si.compareTo(si2));   
                 ^
symbol: method compareTo(StudentInterface) 
location: variable si of type StudentInterface 
1 error 

Мой вывод, что "объект другого" не соответствует "StudentInterface". Как я могу это решить? Всем спасибо.

+0

Не могли бы вы вставить полный код, чтобы включить важную информацию (например, полное определение StudentInterface)? –

+3

Вы объявили 'int compareTo (Object other);' in 'StudentInterface'? –

+1

Это означает, что интерфейс 'StudentInterface' не указывает метод' compareTo'. Кажется, что вы только определили его в классе «Студент». –

ответ

1

Добавить по сравнению с интерфейсом. Все используемые методы должны быть представлены в типе переменной. si имеет тип StudentInterface, поэтому вы можете использовать только методы, объявленные на StudentInterface.