Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    122

    [JAVA] interfaccia Comparable

    Ciao a tutti...ho questo piccolo problemino che non riesco a capire da cosa sia dovuto. Voi che siete più esperti di me di sicuro saprete aiutarmi...

    public class OrdList implements Comparable
    {
    private Elem first;

    public OrdList()
    {
    first = null;
    }

    public static void main(String[] args)
    {
    String str = "prova";
    int prova = str.compareTo("prova1");
    System.out.println(prova);
    }

    public int compareTo(Object obj)
    {
    if(this==obj) return 0;
    else return 1;
    }

    private class Elem
    {
    Comparable dato;
    Elem next;
    }
    }

    Questo è il mio codice.
    Se io eseguo così,mi stampa -10.
    Se invece metto due stringhe uguali compareTo ritorna giustamente 0.
    Oppure se nel metodo compareTo al posto di return 1 metto return 3 o 5...mi ritorna -8.
    Grazie in anticipo...ciao ciao

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    stai chiamando il metodo compareTo di String, non quello della tua classe

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    122
    t ringrazio per il tuo aiuto ma ancora non c sn sulla chiamata del metodo.Come faccio a chiamare quello della mia classe?grazie ancora ciao ciao

  4. #4
    Attenzione. L'interfaccia Comparable, ed il conseguente metodo compareTo, serve per la definizione di una relazione d'ordine su elementi di una classe (< = >).

    A te, per quel che sembra, occorre ridefinire il metodo

    codice:
    boolean equals(Object o)
    che torna vero se l'oggetto in input è uguale a quello in uso, cioè quello su cui hai chiamato equals.

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da fegret
    t ringrazio per il tuo aiuto ma ancora non c sn sulla chiamata del metodo.Come faccio a chiamare quello della mia classe?grazie ancora ciao ciao
    Mi rifaccio solo a questo quote, la risposta al tuo problema principale sta (in parte) nel post di eumene.

    Per utilizzare il metodo della tua classe, devi richiamarlo su oggetti della tua classe e non su oggetti di classi diverse. Stai chiamando il metodo compareTo() su un oggetto della classe String, non su un oggetto della classe OrdList.
    Inoltre, non confronti i valori degli oggetti, ma i loro puntatori.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.