Nyckelord: Loopar, Scanner
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.
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.