ÖVNINGSUPPGIFT

Uppgift 7 – Utskrifter i loopar

Försök själv först. Ledtrådar och facit finns längre ner – helt utan inloggning.


Nyckelord: While-loopen, For-loopen

Utskrifter i loopar

Nedan visas ett program som skriver ut värden inuti olika loopar. Vad blir utskriften?

public class Uppgift7 {
    public static void main(String[] args) {
        // a
        int n = 0;
        boolean done = false;
        while (!done) {
            done = n++ > 10;
            System.out.println(n);
        }

        // b
        int k = 2078670162;
        while (k > 0) {
            System.out.println(k);
            k = k / 10;
        }

        // c
        for (int i = 0; i < 10; i+=2) {
            for (int j = 0; j < i; j++){
                System.out.println(j);
            }
            System.out.println();
        }
    }
}
Ledtråd

Fundera över hur variablerna förändras varje iteration av loopen. Exempelvis:

i++; // Ökar med 1
j+=2; // Ökar med 2
Svar

A: Förklaring

1
2
3
4
5
6
7
8
9
10
11
12

Operationen n++ ökar variabeln n med 1. Observera att jämförelsen görs först, sedan ökar n med 1. Missa därför inte att även 12 skrivs ut, eftersom programmet först kommer kontrollera 11 > 10 (vilket är sant), sedan öka n från 11 till 12 och skriva ut resultatet.

Om det istället hade stått ++n istället för n++, hade programmet först ökat n med 1, sedan gjort jämförelsen.

B: Förklaring

2078670162
207867016
20786701
2078670
207867
20786
2078
207
20
2

Programmet skriver ut värdet på variabeln k och delar sedan talet med 10. Eftersom k är en integer, kommer decimaltalet kapas av.

C: Förklaring

0
1

0
1
2
3

0
1
2
3
4
5

0
1
2
3
4
5
6
7

Första iterationen av loopen kommer vi inte gå in i den inre loopen. Sedan ökar i med 2 varje iteration. Den inre loopen skriver ut värdet på j som ökar med 1 tills dess att i < j.

Fler uppgifter