banansplitt™ Skrevet 13. september 2012 Del Skrevet 13. september 2012 Hei Denne uken, som hver uke, får vi en del oppgaver fra en bok kalt "Building Java Programs". Denne uken måtte jeg føre opp 6 av 13 oppgaver på blokka som håpløse, enten fordi de var uforståelige, eller fordi fasiten inneholdt så mange feil at det ville bare bli forvirrende å prøve å løse dem. Har plukket ut et par oppgaver som jeg gjerne vil at dere skal se på. Jeg skjønner ikke oppgaven og heller ingen andre jeg har forhørt meg med skjønner oppgavene. 7. Suppose you have an int variable called number. What Java expression produces the last digit of the number (the 1s place)? 8. Suppose you have an int variable called number. What Java expression produces the second-to-last digit of the number (the 10s place)? What expression produces the third-to-last digit of the number (the 100s place)? Lenke til kommentar
process Skrevet 13. september 2012 Del Skrevet 13. september 2012 (endret) int number = 1234; Første oppgaven skal du finne tallet på enerplassen, altså 4. Andre oppgaven skal du finne tallene på tierplassen og hundreplassen, altså 3 og 2. Greit med unntak dersom tallene ikke er høye nok til inneha disse verdiene. Skjønner du ikke oppgaven eller klarer du ikke å løse den? Endret 13. september 2012 av process Lenke til kommentar
Djn Skrevet 13. september 2012 Del Skrevet 13. september 2012 (endret) De vil ha kode som gir enerne/tierne/hundrerne fra tall, altså: Gitt tallet 12345, skriv kode som returnerer 5 (enerne), 4 (tierne) og 3 (hundrerne). edit: Som Process også sier, ja. Endret 13. september 2012 av Djn Lenke til kommentar
Mads-b Skrevet 13. september 2012 Del Skrevet 13. september 2012 (endret) Oppgave sju vil at du skal skrive en snutt som tar en gitt integer, og henter ut siste siffer. F.eks: 1234 inn, skal gi 4 ut. 95245 inn, skal gi 5 ut. Skjønner? Denne løser du helt fint med modulo-operatoren. Hvordan dette gjøres, og hva modulo er, er din oppgave å finne ut. Den neste oppgaven vil at du skal hente ut nest siste siffer. 34578 inn, 7 ut. Bruk resultatet fra forrige oppgave for å gjøre denne lettere. EDIT: int number = 1234; Første oppgaven skal du finne tallet på enerplassen, altså 4. Andre oppgaven skal du finne tallene på tierplassen og hundreplassen, altså 3 og 2. Greit med unntak dersom tallene ikke er høye nok til inneha disse verdiene. Trenger ikke unntak. For tallet 7, for eksempel, så er tallet på tierplassen og hundreplassen ganske enkelt 0 Endret 13. september 2012 av Mads-b Lenke til kommentar
Djn Skrevet 13. september 2012 Del Skrevet 13. september 2012 Oppgave sju vil at du skal skrive en snutt som tar en gitt integer, og henter ut siste siffer. F.eks: 1234 inn, skal gi 4 ut. 95245 inn, skal gi 5 ut. Skjønner? Denne løser du helt fint med modulo-operatoren. Hvordan dette gjøres, og hva modulo er, er din oppgave å finne ut. Den neste oppgaven vil at du skal hente ut nest siste siffer. 34578 inn, 7 ut. Bruk resultatet fra forrige oppgave for å gjøre denne lettere. For bonuspoeng kan du også gjøre det ved å gå via en string - det er sikkert grei øvelse å skrive begge, men vær klar over at den matematiske løsningen bør være en del raskere. Lenke til kommentar
Mads-b Skrevet 13. september 2012 Del Skrevet 13. september 2012 Oppgave sju vil at du skal skrive en snutt som tar en gitt integer, og henter ut siste siffer. F.eks: 1234 inn, skal gi 4 ut. 95245 inn, skal gi 5 ut. Skjønner? Denne løser du helt fint med modulo-operatoren. Hvordan dette gjøres, og hva modulo er, er din oppgave å finne ut. Den neste oppgaven vil at du skal hente ut nest siste siffer. 34578 inn, 7 ut. Bruk resultatet fra forrige oppgave for å gjøre denne lettere. For bonuspoeng kan du også gjøre det ved å gå via en string - det er sikkert grei øvelse å skrive begge, men vær klar over at den matematiske løsningen bør være en del raskere. Hadde jeg vært læreren din, hadde jeg strøket deg om du hadde levert String.valueOf(number).toCharArray(); som løsning. Ikke bare lager du et nytt streng-objekt, men du må jo vitterligen caste tilbake til int igjen etterpå! Lenke til kommentar
process Skrevet 13. september 2012 Del Skrevet 13. september 2012 Trenger ikke unntak. For tallet 7, for eksempel, så er tallet på tierplassen og hundreplassen ganske enkelt 0 Riktig, takk Lenke til kommentar
Djn Skrevet 13. september 2012 Del Skrevet 13. september 2012 Oppgave sju vil at du skal skrive en snutt som tar en gitt integer, og henter ut siste siffer. F.eks: 1234 inn, skal gi 4 ut. 95245 inn, skal gi 5 ut. Skjønner? Denne løser du helt fint med modulo-operatoren. Hvordan dette gjøres, og hva modulo er, er din oppgave å finne ut. Den neste oppgaven vil at du skal hente ut nest siste siffer. 34578 inn, 7 ut. Bruk resultatet fra forrige oppgave for å gjøre denne lettere. For bonuspoeng kan du også gjøre det ved å gå via en string - det er sikkert grei øvelse å skrive begge, men vær klar over at den matematiske løsningen bør være en del raskere. Hadde jeg vært læreren din, hadde jeg strøket deg om du hadde levert String.valueOf(number).toCharArray(); som løsning. Ikke bare lager du et nytt streng-objekt, men du må jo vitterligen caste tilbake til int igjen etterpå! Realistisk sett er det lettere å lese charArray-utgaven, og i veldig mange sammenhenger ville ytelsesforskjellen (og minnebruksforskjellen) vært totalt uviktig/umålbar. Det sagt, ja - det kjennes feil ut å gjøre det så mye tyngre. Lenke til kommentar
GeirGrusom Skrevet 13. september 2012 Del Skrevet 13. september 2012 (endret) Realistisk sett er det lettere å lese charArray-utgaven, og i veldig mange sammenhenger ville ytelsesforskjellen (og minnebruksforskjellen) vært totalt uviktig/umålbar. Det sagt, ja - det kjennes feil ut å gjøre det så mye tyngre. Hvordan er det noe enklere? edit: fjernet svar Endret 13. september 2012 av GeirGrusom Lenke til kommentar
Mads-b Skrevet 13. september 2012 Del Skrevet 13. september 2012 (endret) Realistisk sett er det lettere å lese charArray-utgaven, og i veldig mange sammenhenger ville ytelsesforskjellen (og minnebruksforskjellen) vært totalt uviktig/umålbar. Det sagt, ja - det kjennes feil ut å gjøre det så mye tyngre. Njaaa... Jeg er ikke helt enig i at char-arrays er lettere å lese. Det er mye kode bare for å hente ut et siffer. Men det er jo helt individuelt, men lesbarhet trumfer som regel alltid fart, når man programmerer utenfor gutterommet. Men min mening er nå at: int lastDigit = number % 10; int secondToLastDigit = number % 100 / 10; int thirdLastDigit = number % 1000 / 100 er kortere og bedre enn char[] arr = String.valueOf(number).toCharArray(); int lastDigit = Integer.parseInt(arr[arr.length-1]); EDIT: Og i tillegg må man jo faktisk sjekke om tallet er stort nok til å hente ut n'te siffer i char-metoden da, for å unngå arrayindexoutofboundsexception (puh). Da har vi ganske mange kodelinjer bare for å erstatte modulo.. Endret 13. september 2012 av Mads-b Lenke til kommentar
banansplitt™ Skrevet 13. september 2012 Forfatter Del Skrevet 13. september 2012 Takker for hjelp! Det var selve formuleringen på oppgaven jeg virkelig ikke skjønte. 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å