logo

Magic Number v Javi

Pri programiranju je a čarobno število je številska vrednost, ki se uporablja neposredno v kodi. Uporablja se za namene identifikacije. V tem razdelku bomo razpravljali kaj je magična številka in kako lahko najdemo čarobno številko prek programa Java.

Magično število v programiranju

A čarobno število je trdo kodirana številska vrednost (v nekaterih primerih besedilna vrednost) v kodi, ki se lahko pozneje spremeni. Zdi se samovoljno in nima konteksta ali pomena. Težko ga je posodobiti. Na primer:

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

Uporaba takšne konstante nam lahko pomaga razlikovati datoteke med številnimi drugimi oblikami datotek. Na primer:

  • Datoteke PDF se začnejo s čarobnim besedilom %PDF -> Hex (25 50 44 46)
  • Datoteke PNG se začnejo s čarobnim besedilom %PNG -> Hex (25 50 4E 47)

Zakaj se je treba izogibati čarobnim številkam?

V programiranju ne smemo uporabljati čarobnih števil, ker to vodi do anti-vzorca, zaradi katerega je kodo težko razumeti in vzdrževati. Prav tako skriva namen, zato se je treba izogibati uporabi magičnih števil. Spremembe zakonika so tudi grenke težje.

java rep

Priporočljivo je, da za predstavitev vrednosti uporabite konstanto namesto uporabe magičnih števil. Izboljša berljivost kode in omogoča enostavno spreminjanje kode.

Magično število v matematiki

V matematiki, če je vsota njenih števk rekurzivno se izračuna do enomestne številke. Če je ena števka 1, se število imenuje a čarobno število . Je precej podoben srečna številka .

na primer 325 je magično število, ker je vsota njegovih števk (3+2+5) 10, in ponovno seštejemo rezultanto (1+0), dobimo enomestno (1) kot rezultat. Število 325 je torej magično število.

Nekatere druge magične številke so 1234, 226, 10, 1, 37, 46, 55, 73 itd. .

izvedba skriptne lupine

Upoštevajte, da če je številka magična številka, bodo tudi vse možne kombinacije številke magične številke.

Na primer, 532, 253, 325, 235, 352, 523 vsota števk vseh števil da 10 in ponovno seštejemo rezultat (1+0), dobimo enomestno, tj. 1. Zato lahko rečemo da so tudi magična številka in njene kombinacije magične.

Implementirajmo zgornjo logiko v program Java in preverimo, ali je dano število čarobno ali ne.

stavek bash if

Program Java Magic Number

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.'); } } } 

Izhod 1:

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

Rezultat 2:

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

Poglejmo še eno logiko za preverjanje magične številke.

MagicNumberExample2.java

java izboljšana zanka
 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; } } 

Izhod 1:

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

Rezultat 2:

 Enter any number to check: 671 671 is not a magic number. 

Čarobna številka proti srečni številki

Edina razlika med magija številke in srečen števil je, da v magičnem številu rekurzivno seštejemo vse števke števila, dokler ne dobimo signalne števke, tj. 1. Medtem ko v srečen število, rekurzivno izračunamo vsoto kvadrata števk, dokler ne dobimo ene same števke 1. Če ta postopek povzroči neskončen cikel števil, ki vsebujejo 4, potem se število imenuje nesrečen število. Na primer, moramo preveriti 19 je čarobna in srečna številka ali ne.

Primer magične številke Primer vesele številke
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> 

V obeh primerih dobimo 1 . Zato število 19 je čarobno število in tudi srečno število.