Haraldson Skrevet 25. september 2006 Del Skrevet 25. september 2006 Litt vanskelig å lage en god tittel til denne. Uansett, oppgaven går ut på at jeg skal bruke løkker til å skrive ut tall fra 10 til 0. Videre skal det skrives ut maks 5 tall på hver linje før linjeskift foretas. Utskriften skal ergo se slik ut: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 Har kommet fram til følgende kode, som for så vidt gir meg riktig første linje, men derfra blir alt feil. public class telleBaklengsFemPaaHverLinje { public static void main(String[] args) { int telleFra = 10; while(telleFra >= 0) { if(telleFra >= 6) { System.out.print(telleFra + ", "); } else if(telleFra <= 5) { System.out.print("\n" + telleFra + ", "); } telleFra--; } } } Til og med jeg skjønner jo at dette er veldig tungvint, det er delvis feil, og det må finnes en veldig mye enklere måte å gjøre dette på som jeg ikke har forstått. Så, what to do, what to do? Lenke til kommentar
pgdx Skrevet 25. september 2006 Del Skrevet 25. september 2006 Du kan jo prøve å bruke en for-løkke: int j = 0; for (int i = 10; i >= 0; i--) { System.out.print(i + " "); j++; if (j==5) { System.out.print("\n"); j = 0; } } Litt jalla, men... Lenke til kommentar
Haraldson Skrevet 25. september 2006 Forfatter Del Skrevet 25. september 2006 Det der forsto jeg bare sånn halvveis. Vet uansett at dette skal være mulig med while-løkker, siden vi ikke har kommet lenger i undervisningen (). Måtte være å nøste flere while-løkker eller lignende? Lenke til kommentar
krigun Skrevet 25. september 2006 Del Skrevet 25. september 2006 (endret) Det der forsto jeg bare sånn halvveis. Vet uansett at dette skal være mulig med while-løkker, siden vi ikke har kommet lenger i undervisningen (). Måtte være å nøste flere while-løkker eller lignende? 6935795[/snapback] int counter = 100; while(counter > 0) System.out.print(counter-- + (counter % 5 == 0 ? "\n" : " ")); ------------------- 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Endret 25. september 2006 av krigun Lenke til kommentar
Haraldson Skrevet 25. september 2006 Forfatter Del Skrevet 25. september 2006 OK, pga. linje 3 skjønner jeg omtrent litt mindre enn før. Tenker det der er litt viderekommen Java-kode, jeg forstår i alle fall ikke syntaksen og hvordan modulus kan hjelpe til med dette osv. Maser sikkert grådig nå, men fint om dere kan forklare bittelitt, eventuelt legge ut en metode som baserer seg på nøstede løkker el. Lenke til kommentar
pgdx Skrevet 25. september 2006 Del Skrevet 25. september 2006 class TellBaklengs { public static void main(String[] args) { for (int i = 100; i >= 0; i--) { System.out.print(i + " "); if (((i-1)%5== 0)) { System.out.print("\n"); } } } } En for-løkke begynner du nok å bruke nå snart, så det er like greit å bli kjent med den nå. Den har her tre statements i seg: Den første er utgangspunktet. Når du første gang kommer inn i for-løkken, skal en Integer (i) med verdi 100 opprettes. for-løkken skal utføres så lenge den andre delen er sann, nemlig så lenge i er større enn 0. Og den siste delen sier hva som skjer for hver gang for-løkken har kjørt, nemlig minsk i med én. i%5 betyr at du deler i på 5 og ser hvilke rest du sitter igjen med. Dette er barneskolematematikk. Lenke til kommentar
Ueland Skrevet 25. september 2006 Del Skrevet 25. september 2006 (endret) Hm, den oppgaven hørtes kjent ut.. Løsningen jeg brukte var noe a la dette, har ikke koden foran meg så gjetter meg litt frem int tallPerRad = 5; int maksTall = 20; int runde = 0; while(maksTall != 0) { //så lenge "maksTall" ikke er 0 gjør... runde++; //Øk "denne runden" med en if(runde == tallPerRad) { System.out.println(" "+maksTall); //Skriv ut tall med linjeskift runde = 0; } else { System.out.print(" "+maksTall); //Skriv ut tallet uten linjeskift } maksTall--; //Senk tallet som skal vises neste gang med 1 } Dette gir deg da 20 19 18 17 16 15 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Endret 25. september 2006 av Ueland Lenke til kommentar
Haraldson Skrevet 25. september 2006 Forfatter Del Skrevet 25. september 2006 Da fikk jeg det til, om ikke annet. Som jeg sa på MSN, det bekymrer meg dog at det forventes at jeg skal kunne tenke meg til dette selv, når jeg jo faktisk ikke har sjans. drange: Vi hadde i alle fall ikke om modulus på barneskolen, og ja - jeg vet hvordan modulus fungerer, det blir bare vanskelig å forstå i sammenhengen. Syns ikke for-løkker var det mest ryddige og forståelige, liksom. Lenke til kommentar
pgdx Skrevet 25. september 2006 Del Skrevet 25. september 2006 Kanskje ikke mest oversiktlig når du ikke kjenner til det, men du får komprimert det ned og gjør det mer lettlest når du kan det: int i = 0; while (i < 10) { ... i++; } vs. for (int i = 0; i< 10; i++) { ... } 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å