logo

자바의 매직넘버

프로그래밍에서는 매직넘버 코드에서 직접 사용되는 숫자 값입니다. 식별 목적으로 사용됩니다. 이 섹션에서는 다음 내용을 논의하겠습니다. 매직넘버란 무엇인가 그리고 Java 프로그램을 통해 매직 넘버를 어떻게 찾을 수 있습니까?

프로그래밍의 매직넘버

매직넘버 나중에 변경될 수 있는 코드의 하드 코딩된 숫자 값(경우에 따라 텍스트 값)입니다. 그것은 임의적인 것처럼 보이며 맥락이나 의미가 없습니다. 업데이트가 어렵습니다. 예를 들어:

 const num = 74; //where 2 is hard-coded const number = num / 2; //it should be properly defined 

이러한 상수를 사용하면 다른 많은 파일 형식 중에서 파일을 구별하는 데 도움이 될 수 있습니다. 예를 들어:

자바의 tostring 메소드
  • PDF 파일은 마법 텍스트 %PDF -> Hex(25 50 44 46)로 시작합니다.
  • PNG 파일은 마법 텍스트 %PNG -> Hex(25 50 4E 47)로 시작합니다.

매직넘버를 피해야 하는 이유는 무엇입니까?

프로그래밍에서 매직 넘버를 사용하면 안 됩니다. 왜냐하면 코드를 이해하고 유지 관리하기 어렵게 만드는 안티 패턴으로 이어지기 때문입니다. 또한 의도를 숨기므로 매직넘버의 사용은 피해야 합니다. 코드 변경도 더욱 어렵습니다.

매직 넘버를 사용하는 대신 상수를 사용하여 값을 나타내는 것이 좋습니다. 코드의 가독성을 향상시키고 코드 수정을 쉽게 해줍니다.

수학의 매직넘버

수학에서는 숫자의 합이 재귀적으로 한 자리까지 계산됩니다. 한 자리 숫자가 1이면 그 숫자를 'a'라고 합니다. 매직넘버 . 그것은 다음과 상당히 유사합니다. 행복한 숫자 .

예를 들어, 325 는 숫자의 합(3+2+5)이 10이기 때문에 마법의 숫자이고, 다시 결과(1+0)를 더하면 결과로 한 자리 숫자(1)를 얻습니다. 따라서 325라는 숫자는 마법의 숫자이다.

다른 마법의 숫자는 다음과 같습니다. 1234, 226, 10, 1, 37, 46, 55, 73 등 .

숫자가 매직 넘버인 경우 숫자의 가능한 모든 조합도 매직 넘버가 됩니다.

예를 들어, 532, 253, 325, 235, 352, 523 모든 숫자의 자릿수 합은 10이 되고 다시 결과(1+0)를 더하면 한 자릿수, 즉 1이 됩니다. 따라서 다음과 같이 말할 수 있습니다. 매직넘버와 그 조합도 역시 매직이다.

캣 팀프

위의 논리를 Java 프로그램에 구현하고 주어진 숫자가 마법인지 아닌지 확인해보자.

자바 매직넘버 프로그램

MagicNumberExample1.java

 import java.util.Scanner; public class MagicNumberExample1 { public static void main(String args[]) { int n, remainder = 1, number, sum = 0; //creating a constructor of the Scanner class Scanner sc = new Scanner(System.in); System.out.print('Enter a number you want to check: '); //reading an integer form the user n = sc.nextInt(); //assigning the entered number in the variable num number = n; //outer while loop while (number > 9) //while(number > 0 || sum > 9) { //inner while loop while (number > 0) { //determines the remainder remainder = number % 10; sum = sum + remainder; //divides the number by 10 and removes the last digit of the number number = number / 10; } number = sum; sum = 0; } if (number == 1) { System.out.println('The given number is a magic number.'); } else { System.out.println('The given number is not a magic number.'); } } } 

출력 1:

 Enter a number you want to check: 325 The given number is a magic number. 

출력 2:

 Enter a number you want to check: 891 The given number is a magic number. 

매직넘버를 확인하는 또 다른 로직을 살펴보겠습니다.

MagicNumberExample2.java

 import java.util.Scanner; public class MagicNumberExample2 { public static void main(String args[]) { Scanner scanner = new Scanner(System.in); System.out.print('Enter any number to check: '); //reading an iteger from the user int number = scanner.nextInt(); if(magicNumber(number)) System.out.println(number +' is a magic number.'); else System.out.println(number +' is not a magic number.'); } //user-defined method to check the number is magic or not public static boolean magicNumber(int number) { if( ((number - 1) % 9) == 0) return true; else return false; } } 

출력 1:

 Enter any number to check: 73 73 is a magic number. 

출력 2:

버블 정렬 자바
 Enter any number to check: 671 671 is not a magic number. 

매직넘버 vs 해피넘버

유일한 차이점은 마법 숫자와 행복하다 숫자는 마법의 숫자에서 신호 숫자, 즉 1을 얻을 때까지 숫자의 모든 숫자를 재귀적으로 합산한다는 것입니다. 행복하다 숫자, 우리는 한 자리 숫자 1을 얻을 때까지 자릿수 제곱의 합을 재귀적으로 계산합니다. 이 프로세스로 인해 4를 포함하는 숫자의 끝없는 순환이 발생하면 그 숫자를 숫자라고 합니다. 불행한 숫자. 예를 들어, 확인해야 할 사항은 다음과 같습니다. 19 마법과 행복한 숫자인지 아닌지.

매직넘버의 예 행복한 숫자의 예
We have to check n = 19 1 + 9 = 10 1 + 0 = <strong>1</strong> 
We have to check n=19 1<sup>2</sup>+ 9<sup>2</sup> = 1 + 81 = 82 8<sup>2</sup>+ 2<sup>2</sup> = 64 + 4 = 68 6<sup>2</sup>+ 8<sup>2</sup> = 36 + 64 = 100 1<sup>2</sup>+ 0<sup>2</sup>+0<sup>2</sup> = 1 + 0 + 0 = <strong>1</strong> 

두 경우 모두에서 우리는 다음을 얻습니다. 1 . 따라서 숫자는 19 마법의 숫자이자 행복한 숫자이기도 합니다.