2015-10-25 1 views
1

Ceci est pour un devoir. Cependant, j'ai codé la partie écrasante de ma mission. Il y a juste ce barrage routier. Je suis également nouveau à Java, donc ma terminologie peut être un peu éteinte.Comment résoudre: compareTo >> ne peut pas trouver le symbole

J'ai 5 types: fourni par l'enseignant:

  • NameInterface, qui est le fichier d'interface pour le nom
  • Nom, qui utilise 2 chaînes privées, d'abord & dernière, pour la première et nom de famille
  • StudentInterface, qui est le fichier d'interface pour étudiants
  • StudentTest, qui est la méthode principale utilisée pour tester

Principalement fourni par l'enseignant, je dois juste corriger compareTo(). Tout le reste, comme les constructeurs, les champs, etc se fait:

  • étudiants, qui utilise fullName (qui est un NameInterface) & ville Chaîne

classe le nom a une dérogation compareTo() qui utilise le intégré Java en compareTo pour comparer cette première & autre premier

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 

classe Student a un compareTo() qui utilise le nom de classe compareTo pour comparer ce nom & autre nom un s ainsi que cette ville & autre ville

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 

J'essaie d'appeler compareTo de classe des étudiants en StudentTest, mais il dit ne peut pas trouver le symbole.

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)); 

erreur est:

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 

Ma conclusion est que "autre objet" ne se conforme pas "StudentInterface". Comment puis-je résoudre ça? Merci tout le monde.

+0

Pourriez-vous coller le code complet pour inclure des informations importantes (par exemple, la définition complète de StudentInterface)? –

+3

Avez-vous déclaré 'int compareTo (Object other);' dans 'StudentInterface'? –

+1

Cela signifie que l'interface 'StudentInterface' ne spécifie pas de méthode' compareTo'. Il semble que vous en définissiez seulement un dans la classe 'Student'. –

Répondre

1

Ajouter à la comparaison avec l'interface. Toutes les méthodes utilisées doivent être représentées sur le type de la variable. si est de type StudentInterface, vous ne pouvez donc utiliser que des méthodes déclarées sur StudentInterface.