Kakeshoma Skrevet 16. januar 2012 Del Skrevet 16. januar 2012 (endret) Begynt med denne Codecademy-greia for å få litt programmeringskunnskaper... Men står fast på et sikkert latterlig lett sted. But look at that "15"...it says "Fizz" but it should be "FizzBuzz" because it's divisible by both 3 and 5. Oops! Add another if statement to your code to check for this special case. You are allowed to put if statements inside other if statements. This is called nesting. // Add an else statement in case the number is divisible by 5. // for the numbers 1 through 20, for (i=1; i<=20; i++) { // if the number is divisible by 3, write "Fizz" if ( i % 3 === 0) { console.log("Fizz") } // if the number is divisible by 5, write "Buzz" else if (i % 5 === 0) { console.log("Buzz"); } // otherwise, write just the number else { console.log(i); } } Jeg skal altså ha en kode som gjør at tall som kan deles på 3 og 5 vises som FizzBuzz i konsollen... Mens de som bare deles på skal vises som Fizz, og de som deles på 5 som Buzz. http://www.codecademy.com/courses/fizzbuzz/0#!/exercises/3 Hjelp? Endret 16. januar 2012 av Kakeshoma Lenke til kommentar
Araho Skrevet 16. januar 2012 Del Skrevet 16. januar 2012 Du skriver "else if", noe som fører til at koden kjøres ENTEN ved i % 3, ELLER i % 5 Lenke til kommentar
Kakeshoma Skrevet 16. januar 2012 Forfatter Del Skrevet 16. januar 2012 (endret) Takk for svar Men jeg ble ikke så mye klokere... Annet enn jeg ikke kan bruke else if...? Else if ga vel ingen mening i koden når jeg tenker meg om. Endret 16. januar 2012 av Kakeshoma Lenke til kommentar
jonny Skrevet 16. januar 2012 Del Skrevet 16. januar 2012 (endret) Erstatt if ( i % 3 === 0) { console.log("Fizz") } med if (i % 3 === 0) { if (i % 5 === 0) console.log("FizzBuzz"); else console.log("Fizz"); } Endret 16. januar 2012 av jonny Lenke til kommentar
Araho Skrevet 16. januar 2012 Del Skrevet 16. januar 2012 Du kunne enkelt og greit bare droppet "else"-biten i koden, så ville det funket. I tillegg trenger du ikke { og } om du bare har én linje kode i en if / else. Dermed ser det slik ut: // for the numbers 1 through 20, for (i=1; i<=20; i++) { // if the number is divisible by 3, write "Fizz" if ( i % 3 === 0) console.log("Fizz"); // if the number is divisible by 5, write "Buzz" if (i % 5 === 0) console.log("Buzz"); // otherwise, write just the number else console.log(i); } Lenke til kommentar
Kakeshoma Skrevet 16. januar 2012 Forfatter Del Skrevet 16. januar 2012 Erstatt if ( i % 3 === 0) { console.log("Fizz") } med if (i % 3 === 0) { if (i % 5 === 0) console.log("FizzBuzz"); else console.log("Fizz"); } Takk, funket. Lenke til kommentar
Kakeshoma Skrevet 16. januar 2012 Forfatter Del Skrevet 16. januar 2012 På den siste oppgaven står det: FizzBuzz from 1 to 20 is cool, but you know what's cooler? FizzBuzz from 1 to 100. Modify your FizzBuzz program so that it runs for 1 to 100. If you want to be really cool, replace 100 with a variable that you declare and set at the beginning of your program so you can easily impress your friends with FizzBuzz solutions for any number of your choosing. Skrev da dette i starten: var i = 1 ; var number = 100 ; for (i; i<=number; i++) Men den godtar ikke det... Vet dere hva den er ute etter? Lenke til kommentar
Wedvich Skrevet 17. januar 2012 Del Skrevet 17. januar 2012 (endret) Det ser greit ut det du har gjort på slutten der, så jeg vet ikke hvorfor den ikke aksepterer det. Men det blir uansett ikke helt riktig med Araho sin løsning, da alle tall som IKKE er delelige på 5 kommer til å bli skrevet ut i uavhengig om de er delelige på 3 eller ikke. Tallet 3 kommer for eksempel da til å føre til at både Fizz og 3 blir skrevet ut, siden det er to helt separate if-setninger. Først får du dette: Er tallet delelig på 3? Skriv "Fizz". Så en ny runde med dette: Er tallet delelig på 5? Skriv "Buzz". Hvis ikke, skriv selve tallet. Her er en funksjonell rett frem-løsning (som også lar deg bestemme hvor mange tall det er): var max = 123; // eller hva du nå vil ha var i = 1; for (i; i <= max; ++i) { if (i % 3 === 0 && i % 5 === 0) { console.log("FizzBuzz"); } else if (i % 3 === 0) { console.log("Fizz"); } else if (i % 5 === 0) { console.log("Buzz"); } else { console.log(i); } } Det går fint an å effektivisere dette mer med færre ifs og ingen else, men dette er grunnleggende løsning som er enkel å forstå. Gangen blir nå følgende: Er tallet delelig på både 3 og 5? Skriv "FizzBuzz". Hvis ikke, er det delelig på 3? Skriv "Fizz". Hvis ikke, er det delelig på 5? Skriv "Buzz". Hvis ikke, skriv selve tallet. Vil også nevne at selv om du i teorien ikke trenger {} når det kun er én handling som utføres, anbefaler jeg å følge god kodeskikk og inkludere {} likevel. Det blir noen ekstra tegn og mellomrom av det, men du får kode som er lettere å lese, og du har mye bedre kontroll på hvor f.eks. én if slutter og en annen begynner. Endret 17. januar 2012 av Wedvich 1 Lenke til kommentar
Kakeshoma Skrevet 17. januar 2012 Forfatter Del Skrevet 17. januar 2012 Nydelig, takker. Den && koden gjorde susen, og det ser jo veldig bra ut. Lenke til kommentar
jonny Skrevet 17. januar 2012 Del Skrevet 17. januar 2012 (endret) Jeg synes det ble for mange kodelinjer... jeg foretrekker litt mer kompakt kode: var max = 123; // eller hva du nå vil ha var min = 1; for(var i=min; i<=max; i++) console.log(i%3==0? (i%5==0? "FizzBuzz" : "Fizz") : (i%5==0? "Buzz" : i)); :!: Endret 17. januar 2012 av jonny 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å