ÖVNINGSUPPGIFT

Uppgift 10 - Baklänges

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


Nyckelord: Loopar, Scanner

else-if satsen Java Python programmering kod

Uppgift 10 - Baklänges

Skriv ett program som ber användaren att ange ett heltal och sedan ska programmet skriva ut siffran med siffrorna omvända. Till exempel, om input är 12345, ska output vara 54321. Du får inte använda dig av en String för att lösa uppgiften.

Ledtråd

Använd modulus 10 av talet användaren skriver för att kapa av en del av ett nummer. Exempelvis om användaren skriver in 12345:

number = number % 10; // ger 5

Använd en while-loop för att loopa igenom siffra för siffra till dess att du gått igenom alla siffror i talet.

Svar
import java.util.Scanner;

public class Uppgift10 {
    public static void main(String[] args) {
        // Skapar ett objekt av klassen scanner
        Scanner input = new Scanner(System.in);

        // Frågar användaren om en input
        System.out.println("Ange ett heltal: ");

        // Sparar ner nästa heltal från användaren
        int number = input.nextInt();

        // Startnummer
        long reverse = 0;

        /* Loopa tills vi gått igenom alla siffror i talet
         * Ta siffra för siffra genom modulus 10 och dela sedan med 10
         * för att ta nästa tal i ordningen.
         */
        while(number != 0) {
            reverse = reverse * 10;
            reverse = reverse + number % 10; 
            number = number / 10;
        }
        System.out.println(reverse);
    }
}

Förklaring

Använd först klassen Scanner för att läsa in ett heltal. Kolla sedan på while-loopen:

while(number != 0) {
    reverse = reverse * 10;
    reverse = reverse + number % 10; 
    number = number / 10;
}

Genom att ta modulus av 10 varje iteration, kapar vi hela tiden av en siffra av talet. Detta tal sparar vi undan i reverse. Vi multiplicerar med 10 för att enkelt kunna spara talet med addition och dividera med 10 gör att vi kan ta nästa tal i nästa iteration.

Fler uppgifter

Om det ursprungliga talet slutar på noll försvinner den nollan när resultatet skrivs som ett tal: 120 blir 21. Negativa tal behåller tecknet. Long används för resultatet så att även omvända int-värden får plats.