Denjam Skrevet 29. oktober 2015 Del Skrevet 29. oktober 2015 (endret) Hei! Jeg holder på med en innleveringsoppgave i java. Jeg skal utvide en metode der jeg skal finne ut hvilken plass et objekt har i en tabell, basert på et element av objektet. Metoden har formen: int finnIndeksFraFarge(String farge){ return -1; } Farge er ikke et objekt, men et innhold i et annet objekt. Et objekt Blomst inneholder navn og farge. Må jeg bruke en equals-funksjon her? Aner ikke hvordan jeg går igjennom tabell-listen for å se om noen av objektene har den gitte fargen, for så å returnere hvilken plass objektet med den fargen har i tabellen. Metoden skal returnere -1 dersom ingen av blomstene har den fargen. Endret 29. oktober 2015 av Denjam Lenke til kommentar
etse Skrevet 29. oktober 2015 Del Skrevet 29. oktober 2015 Litt mer å gå på hadde vært fint. Men tenker det blir noe i denne duren: int finnIndeksFraFarge(String farge){ // Antar at blomster er en liste av typen: List<Blomst> blomster; for(int i=0; i<blomster.length; i++) { // sjekke om blomsten på posisjon i har riktig farge if(blomster[i].farge.equals(farge)) { return i } } // Om vi kommer hit fant vi ingen return -1; } Lenke til kommentar
Enthroner Skrevet 30. oktober 2015 Del Skrevet 30. oktober 2015 (endret) Alt ettersom hvilke krav du ellers har til oppgaven så kan det være en ide å beskytte mot nullpointers også. Eksempel (basert på etse sitt gode forslag): int finnIndeksFraFarge(String farge){ int indeks = -1; if (farge != null && blomster != null) { // Antar at blomster er en liste av typen: List<Blomst> blomster; for (int i=0; i<blomster.length; i++) { // sjekke om blomsten på posisjon i har riktig farge if (blomster[i].farge != null && blomster[i].farge.equals(farge)) { indeks = i; } } } return indeks; } Her er det også byttet til en return statement, som er i tråd med de fleste standardene jeg kjenner til (misra pep google etc).Hjelper dette deg? Jeg er ellers helt enig med etse, litt mer å gå på hadde vært bra! Endret 30. oktober 2015 av Enthroner 1 Lenke til kommentar
Denjam Skrevet 30. oktober 2015 Forfatter Del Skrevet 30. oktober 2015 Dere gav veldig gode svar, takk! Jeg prøvde meg frem til etse sitt svar selv, faktisk, men fikk null.pointer exception. Jeg gav minst mulig info fordi jeg helst ville forstå generaliteten av det. Lenke til kommentar
etse Skrevet 30. oktober 2015 Del Skrevet 30. oktober 2015 Å besytte mot NPE (nullpointer exceptions) gitkun mening om du faktisk forventer at koden kan være null i det tilfellet. Om det ikke forventet er jo en null nettop en exception - og da er det ofte greit at det feiler - slik at man på et eller annet punkt kan ha en exception-håndtering som f.eks. logger feilen. Så om du fikk en nullpointer exception er det greit å tenke på hvorfor? Hva her er det som kan være null - og så håndtere akkurat det tilfellet. I stede for å bare skrive super-deffansiv kode som prøver å beskytte mot absolutt alt. 1 Lenke til kommentar
Denjam Skrevet 3. november 2015 Forfatter Del Skrevet 3. november 2015 Takker for kommentaren! Jeg håndterer en tabell som fylles ut ved input av brukeren. Det gjør at mange av tabell-radene vil være tomme. Å gjøre sammenligninger med null-objekter vil være vanskelig, så jeg tror denne reservasjonen gir mye mer mening i dette tilfellet? Lenke til kommentar
Enthroner Skrevet 3. november 2015 Del Skrevet 3. november 2015 Bare som et apropos, så er jeg helt enig med etse om at null exception kan være noe man med vilje ikke vil beskytte seg mot. Sålenge du selv føler du gjør rett så er det bra nok. Sleng inn en kommentar så personen som retter deg forstår hvorfor du har tatt valget ditt. Personlig så føler jeg metodenavnet legger opp til en query eller et søk. Søk kan som kjent ofte feile, og jeg synes ikke det er riktig å kjøre en exception for hver gang et søk ikke treffer det man leter etter. Dette forsterkes også av at man spør etter en index, hvor verdien -1 er en verdi de fleste annser som en 'operasjonen du nettop forsøkte mislyktes'-verdi. Til syvende og sist blir det opp til deg hvor mye du nullsjekker. Sålenge du er student så vil du uansett mest sannsynlig ikke trekkes for å ha for mye guards, med mindre oppgaven dreier seg om feilhåndtering i hierarki Dette svaret er blitt for langt allerede... 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å