Benbjo Skrevet 13. februar 2008 Del Skrevet 13. februar 2008 (endret) Sitter her og slår hodet mot veggen i følgende metode: public Person [] finnSteSosken(String navn, Person[] steSosken){ Person pers = null; Mann pappa = null; Kvinne mamma = null; String far = ""; String mor = ""; int teller = 0; if (personregister.containsKey(navn)){ pers = personregister.get(navn); } if(personregister.containsKey(pers.hentNavnMor())) { mamma = (Kvinne) personregister.get(pers.hentNavnMor()); mor = pers.hentNavnMor(); } if(personregister.containsKey(pers.hentNavnFar())) { pappa = (Mann) personregister.get(pers.hentNavnFar()); far = pers.hentNavnMor(); } if (pappa.hentBrud() != null && mamma.hentBrudgom() != null) { if (!(pappa.hentBrud().equals(mor))){ Kvinne stemor = (Kvinne) personregister.get(pappa.hentBrud()); Person [] kBarn = stemor.hentBarnKvinner(); for (int i = 0; i<10; i++){ if(kBarn[i] != null) { Person barn = kBarn[i]; steSosken[teller] = barn; teller++; } } } if (!(mamma.hentBrudgom().equals(far))){ Mann stefar = (Mann) personregister.get(mamma.hentBrudgom()); Iterator it = stefar.barnMenn.values().iterator(); while(it.hasNext()) { Person barn = (Person) it.next(); steSosken[teller] = barn; teller++; } } } return steSosken; } Problemet er rett og slett at steSosken arrayet alltid er tomt. Det har naturlig nok noe med if-testene å gjøre. Og jeg regner med at det er denne: if (!(mamma.hentBrudgom().equals(far))){ og/eller if (!(pappa.hentBrud().equals(mor))){ Noen som ser problemet? Metoden skal altså gå gjennom et hashmap med personer og finne stesøsken til en gitt person. Det er ikke nødvendig å kommentere at koden er stygg eller kan gjøres på en lettere måte o.l.. Har kun programmert i et halvt år og poenget er at det skal virke, ikke se pent ut Endret 29. mars 2008 av Skagen Utdypet emnetittelen littegrann. Lenke til kommentar
sberg43 Skrevet 14. februar 2008 Del Skrevet 14. februar 2008 Ganske vanskelig å si uten å kjenne klasse Person, Mann, Kvinne etc. Foreslår at du heller poster kode som vi kan kompilere og at du starter med et minimalt eksempel for deg selv. For eksempel at du kan skrive ut alle brudene eller barna til en Mann. Lenke til kommentar
pgdx Skrevet 14. februar 2008 Del Skrevet 14. februar 2008 Haha, jeg misunner det ikke. Jeg har hørt rykter om den idiotiske oppgaven der helt bort hit til UiB. Det jeg har funnet ut er en enkel og kjapp måte å debugge kode på, er å skrive ut variabler underveis der du tror det kan være noe feil. Så dersom du forventer at denne linjen skal returnere true, men den returnerer false: if (!(pappa.hentBrud().equals(mor))){ Kan du enkelt og greit skrive ut litt informasjon før den sjekker: System.out.println(getClass().getName() + "\nPappas brud:\t" + pappa.hentBrud() + "\nMamma:\t" + mor); if (!(pappa.hentBrud().equals(mor))){ Lenke til kommentar
Gjest Slettet+1374861 Skrevet 14. februar 2008 Del Skrevet 14. februar 2008 Hvilken datatype returnerer hentBrud() og hentBrudgom() egentlig? Når jeg ser på koden her blir jeg litt skeptisk: String far = ""; String mor = ""; if (pappa.hentBrud() != null && mamma.hentBrudgom() != null) { if (!(pappa.hentBrud().equals(mor))){ Kvinne stemor = (Kvinne) personregister.get(pappa.hentBrud()); if (!(mamma.hentBrudgom().equals(far))){ Mann stefar = (Mann) personregister.get(mamma.hentBrudgom()); Gitt at hentBrud() returnerer ett objekt av type Pers, eller ett annet objekt, så kjører du altså en equals-sammenligning mellom en Pers og en String. Gitt det andre tilfellet, at hentBrud() returnerer er String representasjon av ett navn, så vil equals-en forsåvidt virke, men neste steg vil ikke fordi du der prøver å caste en String over til en (Kvinne) eller (Mann), for å fylle ut stemor/stefar variabelen... Jeg så ikke noe videre på koden din, men sånn ved første øyekast slo dette meg som merkelig.. Lenke til kommentar
Benbjo Skrevet 14. februar 2008 Forfatter Del Skrevet 14. februar 2008 Brud og brudgom returnerer en string. Alle personer lagres ved en string i HashMap, så det skal gå å hente ut et objekt ved å bruke navnet til stefar/stemor. Uansett, her er koden til person, mann og kvinne. class Person { private String navn; private String kjønn; private boolean gift = false; private String far; private String mor; private String brud; private String brudgom; int antbarn = 0; //get/set metoder for alle variablene void settNavn(String navn){ this.navn = navn; } void settKjønn(String kjønn){ this.kjønn = kjønn; } void settNavnMor(String navnmor){ mor = navnmor; } void settNavnFar(String navnfar){ far = navnfar; } void settGift(boolean gift){ this.gift = gift; } void settBrud(String brud){ this.brud = brud; } void settBrudgom(String brudgom){ this.brudgom = brudgom; } Integer hentAntallBarn(){ return this.antbarn; } String hentBrudgom(){ return this.brudgom; } String hentBrud(){ return this.brud; } Boolean hentGift(){ return this.gift; } String hentNavn(){ return this.navn; } String hentKjønn(){ return this.kjønn; } String hentNavnFar(){ return this.far; } String hentNavnMor(){ return this.mor; } Person (){ } Person(String navn, String kjønn, String far, String mor){ this.navn = navn; this.kjønn = kjønn; this.far = far; this.mor = mor; } void registrerBarn(Person barn) { } void fjernBarn(Person barn){ } void skrivUtBarn(){ } }//end class Person class Mann extends Person { HashMap<String, Person> barnMenn = new HashMap<String, Person>(); Mann (Person nyPerson) { super(nyPerson.hentNavn(),nyPerson.hentKjønn(),nyPerson.hentNavnFar(),nyPerson.hentNavnMor()); } void registrerBarn(Person barn) { barnMenn.put(barn.hentNavn(), barn); antbarn += 1; } void fjernBarn(Person barn) { barnMenn.remove(barn.hentNavn()); antbarn -= 1; } void skrivUtBarn() { Iterator it = barnMenn.values().iterator(); if(barnMenn.size() != 0) { while (it.hasNext()) { Person barn = (Person) it.next(); PersonUtsyn pu = new PersonUtsyn(); pu.skrivBarna(barn.hentNavn()); } } } } //end class Mann class Kvinne extends Person { Person[] barnKvinner = new Person[10]; Kvinne (Person nyPerson) { super(nyPerson.hentNavn(),nyPerson.hentKjønn(),nyPerson.hentNavnFar(),nyPerson.hentNavnMor()); } void registrerBarn(Person barn) { for (int i = 0; i<10; i++){ if (barnKvinner[i] == null) { barnKvinner[i] = barn; i = 10; antbarn += 1; } } } void fjernBarn(Person barn){ for (int i = 0; i<10; i++){ if (barnKvinner[i] == barn) { barnKvinner[i] = null; i = 10; antbarn = antbarn - 1; } } } void skrivUtBarn(){ for (int i = 0; i<10; i++){ if(barnKvinner[i] != null) { Person barn = barnKvinner[i]; PersonUtsyn pu = new PersonUtsyn(); pu.skrivBarna(barn.hentNavn()); } } } Person[] hentBarnKvinner(){ return this.barnKvinner; } Lenke til kommentar
sberg43 Skrevet 14. februar 2008 Del Skrevet 14. februar 2008 Savner fortsatt kode som vi kan kompilere uten feil og et mindre eksempel Lenke til kommentar
Benbjo Skrevet 14. februar 2008 Forfatter Del Skrevet 14. februar 2008 Fikk det uansett til Lenke til kommentar
Bro2 Skrevet 18. februar 2008 Del Skrevet 18. februar 2008 Haha, jeg misunner det ikke. Jeg har hørt rykter om den idiotiske oppgaven der helt bort hit til UiB. Hva er idiotisk med denne oppgaven? Lenke til kommentar
blackbrrd Skrevet 18. februar 2008 Del Skrevet 18. februar 2008 Det er faktisk en oppgave hvor det har noen hensikt å bruke arv og interfaces... Imotsetning til en god del andre oppgaver hvor arv bare gjør oppgaven mer komplisert :o) Lenke til kommentar
semafor Skrevet 19. februar 2008 Del Skrevet 19. februar 2008 Haha, jeg misunner det ikke. Jeg har hørt rykter om den idiotiske oppgaven der helt bort hit til UiB. Hva er idiotisk med denne oppgaven? Hvilke feltvariabler inneholder Person-klassen? Lenke til kommentar
Bro2 Skrevet 26. februar 2008 Del Skrevet 26. februar 2008 Haha, jeg misunner det ikke. Jeg har hørt rykter om den idiotiske oppgaven der helt bort hit til UiB. Hva er idiotisk med denne oppgaven? Hvilke feltvariabler inneholder Person-klassen? Uhh? Please elaborate... Lenke til kommentar
pgdx Skrevet 26. februar 2008 Del Skrevet 26. februar 2008 Haha, jeg misunner det ikke. Jeg har hørt rykter om den idiotiske oppgaven der helt bort hit til UiB. Hva er idiotisk med denne oppgaven? Hvilke feltvariabler inneholder Person-klassen? Uhh?Please elaborate... Hvis du kjenner til oppgaven, så hadde du visst hvordan Person-klassen skulle lages. Så vidt jeg fikk med meg, skulle ikke Person inneholde Person-objekter for far og mor, men strenger som siden måtte brukes for å søke seg frem til Person-objektene. Lenke til kommentar
sberg43 Skrevet 27. februar 2008 Del Skrevet 27. februar 2008 Haha, jeg misunner det ikke. Jeg har hørt rykter om den idiotiske oppgaven der helt bort hit til UiB. Hva er idiotisk med denne oppgaven? Hvilke feltvariabler inneholder Person-klassen? Uhh?Please elaborate... Hvis du kjenner til oppgaven, så hadde du visst hvordan Person-klassen skulle lages. Så vidt jeg fikk med meg, skulle ikke Person inneholde Person-objekter for far og mor, men strenger som siden måtte brukes for å søke seg frem til Person-objektene. Hvis du hadde kjent til tråden så hadde du sett at Bro2 sitt svar var en respons til forespørslen fra en annen poster om hva Person-klassen inneholder. Hensikten med spørsmålet var ikke umidelbart forstålig siden koden til Person-klassen finns i denne tråden. Tipper det var derfor Bro2 spør "Uhh? Please elaborate..." Lenke til kommentar
pgdx Skrevet 28. februar 2008 Del Skrevet 28. februar 2008 Haha, jeg misunner det ikke. Jeg har hørt rykter om den idiotiske oppgaven der helt bort hit til UiB.Hva er idiotisk med denne oppgaven?Hvilke feltvariabler inneholder Person-klassen?Uhh?Please elaborate... Hvis du kjenner til oppgaven, så hadde du visst hvordan Person-klassen skulle lages. Så vidt jeg fikk med meg, skulle ikke Person inneholde Person-objekter for far og mor, men strenger som siden måtte brukes for å søke seg frem til Person-objektene.Hvis du hadde kjent til tråden så hadde du sett at Bro2 sitt svar var en respons til forespørslen fra en annen poster om hva Person-klassen inneholder. Hensikten med spørsmålet var ikke umidelbart forstålig siden koden til Person-klassen finns i denne tråden. Tipper det var derfor Bro2 spør "Uhh? Please elaborate..."Det virker som et ledende spørsmål slik at Bro2 skulle forstå at det var feltvariablene som var litt utenom det vanlige; nemlig "private String far;" fremfor "private Person far;". Lenke til kommentar
Bro2 Skrevet 3. mars 2008 Del Skrevet 3. mars 2008 (endret) Haha, jeg misunner det ikke. Jeg har hørt rykter om den idiotiske oppgaven der helt bort hit til UiB.Hva er idiotisk med denne oppgaven?Hvilke feltvariabler inneholder Person-klassen?Uhh?Please elaborate... Hvis du kjenner til oppgaven, så hadde du visst hvordan Person-klassen skulle lages. Så vidt jeg fikk med meg, skulle ikke Person inneholde Person-objekter for far og mor, men strenger som siden måtte brukes for å søke seg frem til Person-objektene.Hvis du hadde kjent til tråden så hadde du sett at Bro2 sitt svar var en respons til forespørslen fra en annen poster om hva Person-klassen inneholder. Hensikten med spørsmålet var ikke umidelbart forstålig siden koden til Person-klassen finns i denne tråden. Tipper det var derfor Bro2 spør "Uhh? Please elaborate..."Det virker som et ledende spørsmål slik at Bro2 skulle forstå at det var feltvariablene som var litt utenom det vanlige; nemlig "private String far;" fremfor "private Person far;". Jeg kan ikke skjønner hvorfor denne oppgaven er idiotisk fordi feltvariablene i Person-klassen er utenom det vanlige. Nå skal det også nevnes at oppgaven ikke sier noe om hvilke typer variablene i Person-klassen skal være, noe som gjør utsagnet «Jeg har hørt rykter om den idiotiske oppgaven der helt bort hit til UiB» enda merkeligere. Derfor ber jeg om en forklaring. Endret 3. mars 2008 av Bro2 Lenke til kommentar
pgdx Skrevet 4. mars 2008 Del Skrevet 4. mars 2008 Derfor ber jeg om en forklaring.Har du lest kontrakten Modell_grensesnitt (merk også at selve navnet bryter med de facto standard på navngiving, i.e. «CamelCase»)? Lenke til kommentar
steingrim Skrevet 4. mars 2008 Del Skrevet 4. mars 2008 Har du lest kontrakten Modell_grensesnitt (merk også at selve navnet bryter med de facto standard på navngiving, i.e. «CamelCase»)? Au, au, au for et navn. Da jeg var gruppelærer på Ifi dyttet jeg kodekonvensjoner inn i hodene til mine stakkars studenter hele tiden, dette gjør vondt for meg å se. Sukk. Trist. Lenke til kommentar
pgdx Skrevet 4. mars 2008 Del Skrevet 4. mars 2008 (endret) Har du lest kontrakten Modell_grensesnitt (merk også at selve navnet bryter med de facto standard på navngiving, i.e. «CamelCase»)? Au, au, au for et navn. Da jeg var gruppelærer på Ifi dyttet jeg kodekonvensjoner inn i hodene til mine stakkars studenter hele tiden, dette gjør vondt for meg å se. Sukk. Trist. Meget trist. Spesielt med tanke på at det ikke engang er INF1000, men INF1010, objektorientert programmering. Alle som programmerer Java i større skala vet om de forskjellige diskusjonene rundt navngiving på grensesnitt (e.g. IClassName og implementasjonen ClassName, eller ClassName med implementasjonen StandardClassName eller ClassNameImpl osv.), men å kalle det _grensesnitt, ja, det er hinsides enhver programmerer å forstå. I tillegg er jeg sterk motstander av å kode på norsk. Jeg mener all kode, i.e. klassenavn, grensesnittnavn, metodenavn og feltvariabler (inkl. lokale variabler) bør være på engelsk, og det gjelder også kommentarer og dokumentasjon. Endret 4. mars 2008 av pgdx Lenke til kommentar
steingrim Skrevet 4. mars 2008 Del Skrevet 4. mars 2008 (endret) I tillegg er jeg sterk motstander av å kode på norsk. Jeg mener all kode, i.e. klassenavn, grensesnittnavn, metodenavn og feltvariabler (inkl. lokale variabler) bør være på engelsk, og det gjelder også kommentarer og dokumentasjon. Stort sett enig, det aller aller meste bør være på engelsk. MEN enkelte ganger (dog ikke i dette tilfellet) dreier foretningslogikken seg om såpass spesielle og lokale ting at det ikke nytter eller gir mening å oversette. I de tilfellene synes jeg norsk er tillatt. Som feks da jeg jobbet med særtilfeller og rariteter i blåreseptforskriftene Endret 4. mars 2008 av steingrim Lenke til kommentar
pgdx Skrevet 4. mars 2008 Del Skrevet 4. mars 2008 (endret) I tillegg er jeg sterk motstander av å kode på norsk. Jeg mener all kode, i.e. klassenavn, grensesnittnavn, metodenavn og feltvariabler (inkl. lokale variabler) bør være på engelsk, og det gjelder også kommentarer og dokumentasjon. Stort sett enig, det aller aller meste bør være på engelsk. MEN enkelte ganger (dog ikke i dette tilfellet) dreier foretningslogikken seg om såpass spesielle og lokale ting at det ikke nytter eller gir mening å oversette. I de tilfellene synes jeg norsk er tillatt. Som feks da jeg jobbet med særtilfeller og rariteter i blåreseptforskriftene For ikke å gå for mye off topic i stebarn; diskusjon kan fortsettes her ... Endret 4. mars 2008 av pgdx 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å