Gå til innhold

While-løkke - skrive ut tall linjeskift - nye tall


Anbefalte innlegg

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
Videoannonse
Annonse
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 (:p). 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 av krigun
Lenke til kommentar

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

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

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

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

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...