## Java program to check if a number is a magic number or not:

In this post, we will learn how to check if a number is *magic* number or not. This program will get one number as input from the user and print one message either it is a *magic* number or *it is not a magic number*.

I will show you different ways to solve this problem.

### What is a magic number:

A number is called a *magic number* if the sum of the digits of a number, if we find the sum repeatedly till we find a single digit is *1*. For example, letâ€™s check these numbers:

*1234*. The sum of its digits is*10*. Since*10*is not one digit, we need to find the sum of the digits again which is*1 + 0 = 1*, which is a one digit and equal to*1*. So, it is a*magic number*.*1235*. The sum of the digits is*11*. Since*11*is not one digit,*1 + 1*is*2*. So, it is not a*magic number*.

### Method 1: Java program to check if a number is a magic number or not:

In this program, we are taking a number as input from the user and finding the sum of its digits repeatedly until it become a single digit:

```
import java.util.Scanner;
class Main {
public static void main(String[] args) {
int no, sum = 0;
Scanner sc = new Scanner(System.in);
System.out.println("Enter a number: ");
no = sc.nextInt();
while (no > 0 || sum > 9) {
if (no == 0) {
no = sum;
sum = 0;
}
sum += no % 10;
no /= 10;
}
if (sum == 1) {
System.out.println("It is a Magic number");
} else {
System.out.println("It is not a Magic number");
}
}
}
```

In this program,

*no*is an integer variable to hold the value of the user input number.*sum*is to hold the value of the sum of digits of the number.*sc*is a*Scanner*variable to read the user input.- It asks the user to enter a number. It reads it and stores it in the
*no*variable. - The
*while*loop will run till the value of*no*is positive or the value of*sum*is greater than*9*, i.e. not one digit.- If the value of
*no*become*0*, it assigns the calculated sum to*no*and reset the*sum*variable by assigning*0*to it. - On each iteration, it gets the last digit of
*no*by using*% 10*and adds that value to*sum*. - It also removes the last digit from
*no*on each iteration.

- If the value of
- Once the loop ends, it checks the value of
*sum*. If it is*1*, it is a*Magic*number, else it is not a*Magic*number.

If you run this program, it will print output as like below:

```
Enter a number:
1235
It is not a Magic number
Enter a number:
1234
It is a Magic number
```

### Method 2: Check if a number is Magic number or not by using a separate method:

We can also use a separate method to check if a number is *Magic* number or not.

```
import java.util.Scanner;
class Main {
public static boolean isMagicNumber(int no) {
int sum = 0;
while (no > 0 || sum > 9) {
if (no == 0) {
no = sum;
sum = 0;
}
sum += no % 10;
no /= 10;
}
return sum == 1;
}
public static void main(String[] args) {
int no;
Scanner sc = new Scanner(System.in);
System.out.println("Enter a number: ");
no = sc.nextInt();
if (isMagicNumber(no)) {
System.out.println("It is a Magic number");
} else {
System.out.println("It is not a Magic number");
}
}
}
```

Here,

- We created a new method called
*isMagicNumber*. - This method takes one number as the parameter and returns one
*boolean*value. - It finds the sum of the digits of the number and returns
*true*if it is*1*, else it returns*false*.

It will give a similar result.

### You might also like:

- Java program to check if a number is a spy number or not
- Java program to check if a number is a duck number or not
- Java program to check if a number is evil number or not
- Java Math.random() method example to create random numbers
- Java program to check if a number is a spy number or not
- 4 different Java program to check if a number is a sunny number or not
- Java Arrays binarySearch method explanation with example
- java.util.Arrays.deepEquals method explanation with examples
- java.util.Arrays.fill method explanation with examples
- Java Arrays toString method explanation with example