ÖVNINGSUPPGIFT

Uppgift 8 - Variabelbyte

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


Nyckelord: System.out.print

Variabler

Byt plats på variabler

Kod-Kalle skriver ett program där han skapar variablerna a = 1 och b = 4. Han vill sedan byta plats på variablerna så att b = 1 och a = 4. Han skriver följande program.

 public class Uppgift8 {
   public static void main(String[] args) {
     int a = 1;
     int b = 4;
     System.out.println(a);
     System.out.println(b);
     a = b;
     b = a;
     System.out.println(a);  // Ska skriva ut 4
     System.out.println(b);  // Ska skriva ut 1
   }
 }
 

Vad gör Kod-Kalle för fel? Hur ska Kod-Kalle göra för att få programmet att fungera?

Ledtråd

På rad 7 sätts a = b. Då skriver man över värdet som redan finns i a. Nu är alltså värdet på a = 4 och inte längre 1.

När vi sedan på rad 8 sätter b = a, tilldelas variabel b samma värde som a har, det vill säga 4. Nu har alltså både a och b värde 4. Vi behöver alltså en tredje variabel för att temporärt spara undan värdet på a-variabeln.

Svar

Förklaring: 

När variabelbytet görs så sätter Kod-Kalle a = b och b = a. Problemet är att när man gör tilldelningen a = b, så skrivs värdet på a över så att det inte längre finns. Utskriften blir alltså:

1
4
4
4

Lösningen är att använda sig av en tredje variabel som man temporärt sparar undan värdet i. Exempelvis:

 public class Uppgift8 {
   public static void main(String[] args) {
     int a = 1;
     int b = 4;
     int c;
     System.out.println(a);
     System.out.println(b);
     c = a;
     a = b;
     b = c;
     System.out.println(a);
     System.out.println(b);
   }
 }
 

Vilket ger:

1
4
4
1

Fler uppgifter