Avatar billede idnajava Nybegynder
01. maj 2001 - 12:19 Der er 9 kommentarer og
1 løsning

Kan ikke finde ud af compareTo

public int sammenLignNavn(Navn andetNavn){
//equalsTo returnerer en int o eller i  resultat;
if(Kammerater.getNavn.equals(Navn andetNavn).compareTo(Kammerater andetNavn));
return resultat;
//Jeg kan ikke se hvor jeg mangler en ), er der nogen der kan hjælpe mig
//Skal have sorteret et array efter fornavn. Arrayet virker udmærket ellers

        /*C:\\JavaProgs\\-Kursusarbejde3\\Hunde.java:139: \')\' expected.
if(Kammerater.getNavn.equals(Navn andetNavn).compareTo(Kammerater andetNavn));
                                          ^
Avatar billede halfblind Nybegynder
01. maj 2001 - 12:25 #1
tror ikke du kan have equals og compare to i samme sætning
så skal du have den første equals i parentes for sig selv og så det hele compare to det sidste
Avatar billede nute Nybegynder
01. maj 2001 - 13:10 #2
hva er det du egentlig skal sammenligne ?

legg merke til at denne delen:

Kammerater.getNavn.equals(Navn andetNavn) i utgangspunktet returnerer true/false (hvis den hadde fungert, noe den neppe gjør uten at du skriver det på denne måten: Kammerater.getNavn().equals(\"etnavn\")). Dermed kan aldri compareTo bli kalt på den kodebiten, for det ville være det samme som å skrive fx:

true.compareTo(...), og det vil ikke fungere, for true/false ikke er objekter, noe som compareTo krever som parameter.
Avatar billede logical Nybegynder
01. maj 2001 - 14:20 #3
Lidt at bide mærke i:

Resultatet af en equals(String) som nute skriver er en boolean.
Kammerater.getNavn er nok en metode:Kammerater.getNavn()
Equals kræver kun en attribut (andetNavn) ikke en type erklæring (Navn andetNavn)
Ligeledes efter compareTo

Og endelig skal du nok fjerne ; for enden af din if-sætning, hvis det også skal virke.
Husk også på at returnere en værdi hvis if-sætningen ikke bliver udført.

Jeg tror (personligt) at det du nok ønskede var
public int sammelignNavn(Navn andetNavn) {
  return Kammerater.getNavn().compareTo(andetNavn);
}
Avatar billede codemon Nybegynder
01. maj 2001 - 14:30 #4
Husk hvis du sortere ved hjælp af compareTo på Strings kan du kun bruge tallet til at se om det er \"mindre\", lig med eller \"større\". Størrelsen af tallet siger intet.
Avatar billede logical Nybegynder
01. maj 2001 - 15:17 #5
Jo, tallet fra compareTo siger noget. Det er index på den første position, hvor de to strenge er forskellig.
Avatar billede codemon Nybegynder
02. maj 2001 - 11:04 #6
String a = \"aaaba\", b = \"aaaab\", c = \"aaaza\";
System.out.println (a.compareTo(b) + \"    \" + b.compareTo(c));
1 og -25 ? det får jeg ikke til første index der er forskellig.
Avatar billede lsimony Nybegynder
02. maj 2001 - 15:33 #7
if(Kammerater.getNavn().equals((Navn) andetNavn).compareTo((Kammerater) andetNavn));
return resultat;

Mangler du ikke parentes ved getNavn? Er
getNavn()ikke en metode under objektet Kammerater?

Det hjælper også at smide et par parenteser rundt om objekterne i metoderne compareTo og equals.

Du skal ikke placerer et ; efter en if-sætning. Det er vist i C++, at man gør det.

Med venlig hilsen

Lars :-)
Avatar billede clausreimer Nybegynder
03. maj 2001 - 10:51 #8
okay den er mystisk ;) - den ene fejl er at den bliver til \" if ( int ) \" og det går jo ikke så prøv med if(Kammerater.getNavn.equals(Navn andetNavn).compareTo(Kammerater andetNavn)==0);

men andetNavn er den \"false\" eller \"true\" ?
hvis den er så burde den se så\'en ud

if(Kammerater.getNavn.equals(Navn andetNavn) && andetNavn)

men det ka godt værer at jeg har misforstået den ;)

Med Venlig Hilsen
Claus


Avatar billede shartvig Nybegynder
04. maj 2001 - 14:20 #9
Jeg mener problemet ligger som følger:

Hvis vi antager at getNavn er en variabel og ikke en metode (hvis det er en metode så skal der stå getNavn() )

Kammerater.getNavn er af datadtypen (Navn)
Kammerater.getNavn.equals( (Navn) andetNavn) er en boolean
en boolean er en primitiv type og ikke noget objekt, så man ville aldrig kunne kalde compareTo på denne værdi.
Resten af statementet forstår jeg ikke, men ovenstående giver i hvert fald et problem.
Avatar billede shartvig Nybegynder
04. maj 2001 - 14:20 #10
Jeg mener problemet ligger som følger:

Hvis vi antager at getNavn er en variabel og ikke en metode (hvis det er en metode så skal der stå getNavn() )

Kammerater.getNavn er af datadtypen (Navn)
Kammerater.getNavn.equals( (Navn) andetNavn) er en boolean
en boolean er en primitiv type og ikke noget objekt, så man ville aldrig kunne kalde compareTo på denne værdi.
Resten af statementet forstår jeg ikke, men ovenstående giver i hvert fald et problem.
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