jemartinsen81 Skrevet 22. september 2007 Del Skrevet 22. september 2007 (endret) Kan noen gi med råd om hvordan jeg kan få et metodekall til å ikke godta negativ verdi i variabelen sin? Eksempel, variabelen "beløp" skal ikke kunne være negativ: public void innskudd(double beløp) { saldo = saldo + beløp; } Jeg går ut ifra at jeg begynner med "if (beløp < 0)", eller noe tilsvarende med while funksjon, men klarer ikke finne ut hva jeg skal skrive for å få metodekallet til å restarte seg selv for å be om ny verdi (dersom det er det den skal gjøre når den mottar noe negativt). Endret 22. september 2007 av jemartinsen81 Lenke til kommentar
toddy23 Skrevet 22. september 2007 Del Skrevet 22. september 2007 public void innskudd(double beløp) { if(beløp < 0){ System.out.println("Beløper er negativt, prøv igjen") return; } saldo += beløp; } Skulle fungere Lenke til kommentar
jemartinsen81 Skrevet 22. september 2007 Forfatter Del Skrevet 22. september 2007 (endret) public void innskudd(double beløp) { if(beløp < 0){ System.out.println("Beløper er negativt, prøv igjen") return; } saldo += beløp; } Skulle fungere 9549974[/snapback] Takk, men er det ingen måte å få den til å rett og slett ikke godta noen negativ verdi, og øyeblikkelig spørre om et nytt tall uten at jeg manuellt må kjøre hele metodekallet om igjen først? Endret 22. september 2007 av jemartinsen81 Lenke til kommentar
xibriz Skrevet 22. september 2007 Del Skrevet 22. september 2007 (endret) Du kan jo endre metoden til og returnere en boolean: public bollean innskudd(double beløp) { if(beløp < 0){ return false; } else { saldo += beløp; return true; } } og der du kjører koden kan du jo boolean tmp = false; while (tmp == false) { tmp = innskudd( beløp ); } Endret 22. september 2007 av xibriz Lenke til kommentar
jemartinsen81 Skrevet 23. september 2007 Forfatter Del Skrevet 23. september 2007 Takk for løsningsforslag, men jeg kan ikke få det til å fungere i denne oppgaven. Dette er koden jeg har: http://pastebin.com/m12ea5163 Jeg vil at programmet skal spørre om verdien igjen dersom man prøver å taste inn et negativt først, men slik koden er nå så fungerer det ikke i det hele tatt. Hva kan være feil? Lenke til kommentar
McFly Skrevet 23. september 2007 Del Skrevet 23. september 2007 Det er bedre om du legger med hele programmet, slik at andre lett kan teste det ut selv Når du ikke har postet koden som spør brukeren legge inn en verdi, så blir det vanskelig å se helheten. På meg så ser det dog ut som om progarmmet ditt kommer til å sette seg fast i en evighetsløkke om verdien er under null. Årsaken er at du kaller opp identisk metode rekursivt når verdien er negativ. Lenke til kommentar
jemartinsen81 Skrevet 23. september 2007 Forfatter Del Skrevet 23. september 2007 Det er bedre om du legger med hele programmet, slik at andre lett kan teste det ut selv Når du ikke har postet koden som spør brukeren legge inn en verdi, så blir det vanskelig å se helheten. På meg så ser det dog ut som om progarmmet ditt kommer til å sette seg fast i en evighetsløkke om verdien er under null. Årsaken er at du kaller opp identisk metode rekursivt når verdien er negativ. 9556689[/snapback] Ja det er evighetsløkke slik det er nå, så har du noen forslag til hva jeg kan bruke på linje 53 her for at den øyeblikkelig skal spørre om verdi igjen dersom man taster inn noe den ikke godtar først? http://pastebin.com/m774d564e Takk. Lenke til kommentar
Hittman Skrevet 23. september 2007 Del Skrevet 23. september 2007 Da må du isåfall ha en ny input request i while-løkken for at verdien skal endre seg. I utgangspunktet ville jeg lagt denne sjekken der du først kaller metoden, og ikke i selve metoden. Dette for at metoden skal ha minst mulig å gjøre. Lenke til kommentar
jemartinsen81 Skrevet 23. september 2007 Forfatter Del Skrevet 23. september 2007 Da må du isåfall ha en ny input request i while-løkken for at verdien skal endre seg. I utgangspunktet ville jeg lagt denne sjekken der du først kaller metoden, og ikke i selve metoden. Dette for at metoden skal ha minst mulig å gjøre. 9556767[/snapback] Hvordan skal input-requesten se ut når jeg ikke kan bruke scanner.nextDouble() i denne klassen? Lenke til kommentar
xibriz Skrevet 23. september 2007 Del Skrevet 23. september 2007 kan jeg få se main så kanskje jeg kan fikse det? Lenke til kommentar
jemartinsen81 Skrevet 23. september 2007 Forfatter Del Skrevet 23. september 2007 (endret) kan jeg få se main så kanskje jeg kan fikse det? 9558794[/snapback] Jeg har ikke laget noen klasse med main-metode enda. Oppgaven her er at jeg skal gjøre det slik at objektet jeg oppretter ved bruk av denne klassen ikke skal godta negative verdier i variabelen "beløp" på innskudd-metodekallet. Jeg setter stor pris på hvilke som helst løsningsforslag dere kan komme med. De fleste hjemmeoppgavene suser jeg gjennom, men her har jeg skikkelig hjerneteppe av en eller annen grunn. Endret 23. september 2007 av jemartinsen81 Lenke til kommentar
xibriz Skrevet 23. september 2007 Del Skrevet 23. september 2007 (endret) Hvis du bare skal forkaste alle negative tall er det vel bare å skrive public boolean innskudd(double beløp) { if (beløp < 0) { return false; //Kan ikke godta negativ verdi } else { saldo = saldo + beløp; return true; } } public boolean uttak(double beløp) { if (beløp < 0) { return false; //Kan ikke godta negativ verdi } else { saldo = saldo - beløp; return true; } } Også må det være opp til koden i main og håndtere returverdiene fra innskudd og uttak. Endret 23. september 2007 av xibriz Lenke til kommentar
jemartinsen81 Skrevet 24. september 2007 Forfatter Del Skrevet 24. september 2007 Hvis du bare skal forkaste alle negative tall er det vel bare å skrive public boolean innskudd(double beløp) { if (beløp < 0) { return false; //Kan ikke godta negativ verdi } else { saldo = saldo + beløp; return true; } } public boolean uttak(double beløp) { if (beløp < 0) { return false; //Kan ikke godta negativ verdi } else { saldo = saldo - beløp; return true; } } Også må det være opp til koden i main og håndtere returverdiene fra innskudd og uttak. 9558946[/snapback] Takk skal du ha, det er jo sli kdet blir ja... glemte for en stund at resten kan løses i main metoden. Lenke til kommentar
xibriz Skrevet 24. september 2007 Del Skrevet 24. september 2007 Du må jo også ha sjekk i uttakmetoden på at du ikke kan ta ut større beløp enn saldoen din... hvis ikke kommer jeg til deg å tar ut penger Lenke til kommentar
blackbrrd Skrevet 26. september 2007 Del Skrevet 26. september 2007 (endret) Det går jo også an å throwe en IllegalArgumentException hvis argumentet er 0 eller mindre. Da vil programmet ditt feile hvis du har glemt å skrive sjekken av bruker-input istedetfor å f.eks ignorere feilen uten å si ifra, eller justere kontoen feil. Sjekkingen av at beløpet er 0 eller større bør gjøres der verdien skrives inn. Det er ihvertfall hva som er logisk å gjøre hvis du har skillt brukergrensesnittet fra business-logikken. http://pastebin.com/m22ea0b6b Det er forresten ikke noen god ide å bruke tegn som æøå i koden din, det kommer på ett eller annet tidspunkt til å lage masse krøll. Endret 26. september 2007 av blackbrrd 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å