Gå til innhold

Anbefalte innlegg

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
Videoannonse
Annonse

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 av process
Lenke til kommentar

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 av Mads-b
Lenke til kommentar

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

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

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

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 :p

Endret av GeirGrusom
Lenke til kommentar

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 av Mads-b
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...