# What Is Magic Number In Java

Magic Number In Java is a numeric integer that occurs in code without explanation. These numbers are often used to control the behavior of the program or to represent certain conditions.

However, using magic numbers in code is generally considered a bad practice in software development. Named constants or variables make code more readable, manageable, and error-free.

A magic number is a number whose sum of eventual digits is equal to 1 after repeatedly adding its individual digits. Any positive integer is a magic number if you add its digits and continue the procedure until you have a single-digit number that is 1. This intriguing property gives these numbers a unique and “magical” quality in mathematics.

**Also Read:** Features Of Java

## Magic Number Example

Let’s take the number 19:

1 + 9 = 10

Since 10 is not a single-digit number, we repeat the process:

1 + 0 = 1

**Number 19 is a magic number** as we reached the single-digit number 1.

Let’s take another example, the number 28:

2 + 8 = 10

Continue as 10 is not a single-digit number:

1 + 0 = 1

Once more, we have reached the single-digit number 1. Hence, the** number 28 is also a magic number.**

Magic numbers have this fascinating property that, when you perform this digit-summing process repeatedly, you eventually end up with the number 1, which sets them apart from other ordinary numbers in mathematics.

**Also Read: **Java Interview Questions

## Magic Number Program in Java

**Step 1**

Start the program’s execution in the **“****main()”** method.

**Step 2**

Create a **Scanner** object named “**scanner”** to read user input from the console.

**Step 3**

Display the message** “Enter a number: “** using **“****System.out.print()”** to prompt the user to input a number.

**Step 4**

Read the user input as an integer using** “****scanner.nextInt()”** and store it in the variable “**number”**.

**Step 5**

Close the **“****Scanner”** object using** “****scanner.close()”** to release system resources.

**Step 6**

Call the **“****isMagicNumber()”** method and pass the input number** “****number”** as an argument to check if it is a magic number.

**Step 7**

In the** “****isMagicNumber()”** method:

- Initialize an integer variable
**“****sum”**to hold the calculated sum of the digits. - Start a while loop to continue the process until the
**“****num”**becomes a single-digit number (less than or equal to 9). - Inside the loop, set
**“****sum”**to 0 for each iteration. - Use another while loop to calculate the sum of the digits of
**“****num”**:

- Get the last digit of “
**num”**using**“****num % 10”**and add it to the**“sum”**. - Remove the last digit from “
**num”**using “**num /= 10”**.

- Get the last digit of “

- After the inner loop completes, update “
**num”**with the value of “**sum”**, repeating the process. - Once “
**num”**becomes a single-digit number**(less than or equal to 9)**, exit the loop. - Check if “
**num”**is equal to 1. If it is, return “**true”**, indicating that the original number is a magic number. - If “
**num”**is not equal to 1, return “**false”**, indicating that the original number is not a magic number.

**Step 8**

Back in the **main()** method, based on the return value of the “**isMagicNumber()”** method:

- If it returns “
**true”**, display the message**“is a magic number!”**for the entered number using “**System.out.println()”**. - If it returns “
**false”**, display the message “is not a magic number.” for the entered number using “**System.out.println()”**.

The algorithm uses a loop to repeatedly sum the digits of the input number until it becomes a single-digit number **(1)**. **The number is a magic number if the outcome is 1.**

**Also Read:** What Is Java Tokens

## Composite magic number in java

A composite magic number in Java is a number that is both a composite number and a magic number.

So you have one question that arises in mind: **what is a composite number?**

So basically the composite number is a positive integer greater than 1 that has more than two positive divisors (factors).

**Here are a few examples of composite numbers:**

- 4: Factors of 4 are 1, 2, and 4.
- 6: Factors of 6 are 1, 2, 3, and 6.
- 8: Factors of 8 are 1, 2, 4, and 8.
- 9: Factors of 9 are 1, 3, and 9.
- 10: Factors of 10 are 1, 2, 5, and 10.

## Difference Between Composite Magic Number & Magic Number In Java

Property | Composite Magic Number | Magic Number |

Definition | A positive integer that is both a composite number (has more than two divisors) and a magic number (sum of eventual digits is 1). | A positive integer whose sum of eventual digits is equal to 1 after repeatedly adding its individual digits. |

Examples | 4, 9, 25, 55, 121, 126, etc. | 1, 19, 28, 82, 91, 100, etc. |

Divisors | Has more than two divisors besides 1 and itself. | No specific requirement for the number of divisors. |

Prime Number | Can be composite and prime. | Can be prime, but not necessarily. |

Example Program | “isComposite()” and “isMagicNumber()” methods are needed. | Only the “isMagicNumber()” method is needed. |

## FAQ

### What are magic numbers?

Magic numbers are hard-coded numeric or text values in code without clear context, often used to control behavior or represent conditions, best avoided for improved code readability and maintainability.

### How can I check if a number is a magic number in Java?

You can check if a number is a magic number by repeatedly summing its digits until you get a single-digit result of 1. If the final result is 1, the number is a magic number.

### Why should we avoid using magic numbers in Java programming?

Using magic numbers can lead to confusion, errors, and reduced code maintainability. Named constants or variables make code more self-explanatory and less error-prone.

### What are the best practices for dealing with magic numbers in Java?

Replace magic numbers with named constants or enums to improve code readability and maintainability. Avoid hard-coding numeric values directly in the code.

*Technogeeks** is an excellent learning platform for Learning Core and Advanced Java. Enroll to kickstart your journey as a Java developer.*

** ***Checkout our courses on the Java programing below*

👉https://technogeekscs.com/courses/core-java-training 👈

👉 https://technogeekscs.com/courses/advance-java-course 👈