Gavekort Skrevet 19. november 2011 Del Skrevet 19. november 2011 Hei! Jeg har en if-statement her som ikke vil bli utført, så den dropper til else. Når jeg kjører denne debug-funksjonen: public void printtype() throws IOException{ System.out.println((table.get(table.size()-1)).getType()); System.out.println((table.get(table.size()-2)).getType()); } Så får jeg ut f.eks: h h Men når jeg kjører denne koden: public void compare() throws IOException{ if ((table.get(table.size()-1)).getType()==(table.get(table.size()-2)).getType()){ System.out.println("Yey! The two last cards are of same type"); } else{ System.out.println("Returned false"); } } Så får jeg bare: Returned false Jeg vet allerede at "((table.get(table.size()-1)).getType()==(table.get(table.size()-2)).getType())" er sant, fordi "h==h"! Hvorfor dropper den da til else, som om det ikke var sant? Lenke til kommentar
Dinosauromann Skrevet 19. november 2011 Del Skrevet 19. november 2011 Du må bruke .equals(), og ikke ==. == sjekker om objektet er det samme, ikke strengen. Lenke til kommentar
Gavekort Skrevet 19. november 2011 Forfatter Del Skrevet 19. november 2011 (endret) Skal prøve det ut! Men hvorfor kan jeg ikke sammenligne objektet? getType leverer ut dette: public Card(String n, String t) { number = n; type = t; } public String getType(){ return type; } "h" skal jo være lik "h", om det er et objekt eller en string. Alt jeg gjør er å spørre om X er lik Y, der X er "h", og Y er "h". Endret 19. november 2011 av Gavekort Lenke til kommentar
Dinosauromann Skrevet 19. november 2011 Del Skrevet 19. november 2011 (endret) Du er ute etter å sjekke om strengene korttypen (t) inneholder er like, ikke om de refererer til samme objekt. http://stackoverflow.com/questions/767372/java-string-equals-versus Endret 19. november 2011 av Dinosauromann Lenke til kommentar
xaco Skrevet 19. november 2011 Del Skrevet 19. november 2011 Skal prøve det ut! Men hvorfor kan jeg ikke sammenligne objektet? getType leverer ut dette: public Card(String n, String t) { number = n; type = t; } public String getType(){ return type; } "h" skal jo være lik "h", om det er et objekt eller en string. Alt jeg gjør er å spørre om X er lik Y, der X er "h", og Y er "h". Det har noe å gjøre med at String ikke er en datatype, men er faktisk en klasse. Derfor vil ikke == fungere siden det er ikke samme h'en. Lenke til kommentar
Gavekort Skrevet 19. november 2011 Forfatter Del Skrevet 19. november 2011 Ok ok! Tror jeg forstår nå! Hvordan ville dere skrevet koden da? Jeg er ikke kjent med .equals() funksjonen. Lenke til kommentar
Peder82 Skrevet 19. november 2011 Del Skrevet 19. november 2011 (endret) Som Dinosauromann sier blir nok .equals() eller en gettext det greieste. To objekter som er forskjellige, er nettopp forskjellige. Selv om de inneholder en lik tekststreng. HiO? if ((table.get(table.size()-1)).getType().equals(table.get(table.size()-2)).getType()) {} else {} eller noe i den dur Endret 19. november 2011 av Peder82 Lenke til kommentar
Gavekort Skrevet 19. november 2011 Forfatter Del Skrevet 19. november 2011 (endret) Ja! Fikk det til selv! Ble slik: if ((table.get(table.size()-1).getType()).equals((table.get(table.size()-2).getType()))) { System.out.println("Yey! The two last cards are of same type"); } else{ System.out.println("Returned false"); } Grusomt mange paranteser, men det er vel min egen feil! Endret 19. november 2011 av Gavekort Lenke til kommentar
xaco Skrevet 19. november 2011 Del Skrevet 19. november 2011 Ok ok! Tror jeg forstår nå! Hvordan ville dere skrevet koden da? Jeg er ikke kjent med .equals() funksjonen. Det finnes en 2-3 metoder i String klassen du kan bruke, equals() og compareTo(). En annen måte er å bruke en char og en int og sammenligne de med ==. Jeg hadde nok brukt equals om jeg om jeg bare trengte å vite om den var lik, men comparTo hvis jeg trengte å vite noe om størrelseforholdet. Lenke til kommentar
Gavekort Skrevet 19. november 2011 Forfatter Del Skrevet 19. november 2011 equals()-funksjonen er mer enn nok! Det fungerer helt perfekt nå, så takk for hjelpen! Lenke til kommentar
LostOblivion Skrevet 16. desember 2011 Del Skrevet 16. desember 2011 (endret) Litt ryddigere. Mye av begrepet "god kode" ligger i at du holder i bakhodet mens du programmerer at andre skal kunne lese koden din. Dette vil også hjelpe deg senere når du selv skal revidere en kodesnutt f eks. String t1 = table.get(table.size()-1).getType(); String t2 = table.get(table.size()-2).getType(); if (t1.equals(t2)) { System.out.println("Yey! The two last cards are of same type"); } else { System.out.println("Returned false"); } Endret 16. desember 2011 av LostOblivion Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå