Java Project - Armstrong Number Checker
Armstrong Number Checker - Loops and Recursion Solutions:
Armstrong Number Checker :
Check if a number is an Armstrong number.
This project checks if a number is an Armstrong number (a number equal to the sum of its digits each raised to the power of the number of digits). The user inputs a number, and the program returns whether it is an Armstrong number.
Input: A number.
Output: Whether the number is an Armstrong number or not.
Example:
- Input: 153
- Output: "Armstrong number"
- Input: 123
- Output: "Not an Armstrong number"
Solution 1: Armstrong Number Checker Using Loops
Code:
import java.util.Scanner;
public class ArmstrongNumberUsingLoops {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Taking user input
System.out.print("Enter a number: ");
int number = scanner.nextInt();
int originalNumber = number;
int result = 0;
int numberOfDigits = 0;
// Find the number of digits in the input number
int temp = number;
while (temp != 0) {
temp /= 10;
numberOfDigits++;
}
// Calculate the sum of each digit raised to the power of the number of digits
while (number != 0) {
int digit = number % 10;
result += Math.pow(digit, numberOfDigits); // Raise the digit to the power of numberOfDigits
number /= 10;
}
// Check if the sum equals the original number
if (result == originalNumber) {
System.out.println(originalNumber + " is an Armstrong number.");
} else {
System.out.println(originalNumber + " is not an Armstrong number.");
}
scanner.close(); // Close the scanner resource
}
}
Output:
Enter a number: 153 153 is an Armstrong number.
Enter a number: 237 237 is not an Armstrong number
Explanation :
- Input: The program prompts the user to enter a number.
- Count Digits: A loop is used to count the number of digits in the input number.
- Armstrong Calculation: The program calculates the sum of each digit raised to the power of the number of digits.
- Check Armstrong: If the calculated sum equals the original number, it is an Armstrong number; otherwise, it is not.
- Close Scanner: The scanner is closed to free up system resources.
Solution 2: Armstrong Number Checker using Recursion
Code:
import java.util.Scanner;
public class ArmstrongNumberUsingRecursion {
// Recursive function to calculate the sum of digits raised to the power
public static int armstrongSum(int number, int numberOfDigits) {
if (number == 0) {
return 0;
}
int digit = number % 10;
return (int)Math.pow(digit, numberOfDigits) + armstrongSum(number / 10, numberOfDigits);
}
// Helper function to count the number of digits
public static int countDigits(int number) {
if (number == 0) {
return 0;
}
return 1 + countDigits(number / 10);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Taking user input
System.out.print("Enter a number: ");
int number = scanner.nextInt();
int originalNumber = number;
// Find the number of digits
int numberOfDigits = countDigits(number);
// Check if the sum of the powers equals the original number
if (armstrongSum(number, numberOfDigits) == originalNumber) {
System.out.println(originalNumber + " is an Armstrong number.");
} else {
System.out.println(originalNumber + " is not an Armstrong number.");
}
scanner.close(); // Close the scanner resource
}
}
Output:
Enter a number: 370 370 is an Armstrong number.
Enter a number: 371 371 is an Armstrong number.
Explanation:
- Input: The program prompts the user to enter a number.
- Recursive Count Digits: A recursive method is used to count the number of digits.
- Recursive Armstrong Calculation: A recursive method calculates the sum of the digits raised to the power of the number of digits.
- Check Armstrong: The calculated sum is compared to the original number to determine if it is an Armstrong number.
- Close Scanner: The scanner is closed to free up system resources.
Java Code Editor:
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://w3resource.com/projects/java/java-project-armstrong-number-checker.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics