Disarium Number Java Program | ISC Computer Science 2016 Theory

A disarium number is a number in which the sum of the digits to the power of their respective position is equal to the number itself.

Example: 135 = 11 + 32 + 53
Hence, 135 is a disarium number.

Design a class Disarium to check if a given number is a disarium number or not. Some of the members of the class are given below:

Class name: Disarium
Data members/instance variables:
int num: stores the number
int size: stores the size of the number
Methods/Member functions:
Disarium(int nn): parameterized constructor to initialize the data members n = nn and size = 0
void countDigit(): counts the total number of digits and assigns it to size
int sumofDigits(int n, int p): returns the sum of the digits of the number (n) to the power of their respective positions (p) using recursive technique
void check(): checks whether the number is a disarium number and displays the result with an appropriate message

Specify the class Disarium giving the details of the constructor(), void countDigit(), int sumofDigits(int, int) and void check(). Define the main() function to create an object and call the functions accordingly to enable the task.

import java.util.Scanner;
class Disarium{
    int num;
    int size;
    public Disarium(int nn){
        num = nn;
        size = 0;
    }
    public void countDigit(){
        size = String.valueOf(num).length();
    }
    public int sumofDigits(int n, int p){
        if(n < 10)
            return n;
        int term = (int)Math.pow(n % 10, p);
        return term + sumofDigits(n / 10, p - 1);
    }
    public void check(){
        if(num == sumofDigits(num, size))
            System.out.println("Disarium number!");
        else
            System.out.println("Not a disarium number.");
    }
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        System.out.print("Enter the number: ");
        int n = Integer.parseInt(in.nextLine());
        Disarium obj = new Disarium(n);
        obj.countDigit();
        obj.check();
    }
}