Avatar billede ullidk Nybegynder
10. oktober 2004 - 12:31 Der er 5 kommentarer og
1 løsning

Hvad skal der laves om?

Hejsa,

Har denne metode:
    public int compareTo(Object o)
    {
        Person p = (Person)o;
        while(this.lastName.compareTo(p.lastName)==0)
        {
        if(this.firstName.compareTo(p.firstName)==0)
        return this.age.compareTo(p.age);
        else
        return this.firstName.compareTo(p.firstName);       
        }
       
    }

Jeg får flg. fejl:
int cannot be dereferenced...

Jeg har prøvet div. former for casting men intet virker...HJÆLP:-)
Avatar billede arne_v Ekspert
10. oktober 2004 - 12:40 #1
Hvis firstName er en int kan du ikke bruge compareTo men skal bruge < og >.
Avatar billede _carsten Nybegynder
10. oktober 2004 - 12:41 #2
compareTo sammenligner "Objecter", "int" er en primitiv datatype

Jeg formoder problemet ligger her:  return this.age.compareTo(p.age);

Prøv at rette til noget a la:  return new Integer(this.age).compareTo( new Integer(p.age) );
Avatar billede _carsten Nybegynder
10. oktober 2004 - 12:43 #3
Okay - delte meninger om hvor problemet ligger, men enige alligevel :-)
Avatar billede ullidk Nybegynder
10. oktober 2004 - 12:45 #4
carsten, smid et svar:-) Det virkede!
Avatar billede _carsten Nybegynder
10. oktober 2004 - 12:45 #5
Kommer her!
Avatar billede jakoba Nybegynder
10. oktober 2004 - 17:52 #6
Der er kund de 2 objekter der sammenlignes så hvorfor skriver du 'while'
        while(this.lastName.compareTo(p.lastName)==0)
med korrekte indrykninger kan du se hvorfor det er misvisende:

    public int compareTo(Object o)
    {
        Person p = (Person)o;
        if (this.lastName.compareTo(p.lastName)==0)
        {
            if(this.firstName.compareTo(p.firstName)==0)
                return new Integer(this.age).compareTo( new Integer(p.age) );
            return this.firstName.compareTo(p.firstName);     
        }
        return this.lastName.compareTo(p.lastName);  // denne linie manglede
    }

men jeg ville hellere lave det lidt mere forståeligt:

    public int compareTo(Object o)
    {
        Person p = (Person)o;
        if (this.lastName.compareTo(p.lastName)!=0)
            return this.lastName.compareTo(p.lastName);

                        // hvis lastname var ens skal vi kikke videre   
        if(this.firstName.compareTo(p.firstName)!=0)
            return this.firstName.compareTo(p.firstName);
     
                      // og hvis både last og first er ens er det alderen
        return new Integer(this.age).compareTo( new Integer(p.age) );
    }

mvh JakobA
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester