Home >Java >javaTutorial >Example of implementing a digital black hole in Java

Example of implementing a digital black hole in Java

黄舟
黄舟Original
2017-09-14 10:12:171669browse

This article mainly introduces how to implement the digital black hole algorithm game in Java programming, which involves basic knowledge of Java programming such as arrays, scanners, and if statements. Friends in need can refer to the following

Given any For a 4-digit positive integer with different digits, if we first sort the 4 numbers non-increasingly, then non-decreasingly, and then subtract the second number from the first number, we will get a new number. If we keep doing this repeatedly, we will soon stop at 6174, which is known as the "digital black hole". This magical number is also called the Kaprekar constant.

For example, we start from 6767, we will get

7766 - 6677 = 1089
9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174
7641 - 1467 = 6174

Now given any 4-digit positive integer, please write a program to demonstrate the process of reaching the black hole.

Input format:

The input gives a positive integer N in the interval (0, 10000).

Output format:

If the 4 digits of N are all equal, output "N - N = 0000" in one line; otherwise Output each step of the calculation in one line until 6174 appears as the difference. See the example for the output format. Note that each number is output in 4-digit format.

Input sample 1:

6767

Output sample 1:

7766 - 6677 = 1089
9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174

Input sample 2:

2222

Output sample 2:

2222 - 2222 = 0000

The specific code is as follows:


import java.util.Arrays; 
import java.util.Scanner; 
public class Main { 
  public static void main(String args[]) { 
    Scanner sc = new Scanner(System.in); 
    int x = sc.nextInt(); 
    int ans = ds(x)-xs(x); 
    if(ans==0){ 
      System.out.printf("%04d - %04d = %04d\n",ds(x),xs(x),ans); 
    }else{ 
      int n ; 
      do{ 
        n = ds(x)-xs(x); 
        System.out.printf("%04d - %04d = %04d\n",ds(x),xs(x),n); 
        x = n; 
      }while(n!=6174); 
    } 
  } 
  public static int ds (int x){ 
    int[]a = new int[4]; 
    a[0] = x/1000; 
    a[1] = x/100%10; 
    a[2] = x/10%10; 
    a[3] = x%10; 
    Arrays.sort(a); 
    int sum = a[3]*1000+a[2]*100+a[1]*10+a[0]; 
    return sum; 
  } 
  public static int xs (int x){ 
    int[]a = new int[4]; 
    a[0] = x/1000; 
    a[1] = x/100%10; 
    a[2] = x/10%10; 
    a[3] = x%10; 
    Arrays.sort(a); 
    int sum = a[0]*1000+a[1]*100+a[2]*10+a[3]; 
    return sum; 
  } 
}

The output is as follows:


4695
9654 - 4569 = 5085
8550 - 0558 = 7992
9972 - 2799 = 7173
7731 - 1377 = 6354
6543 - 3456 = 3087
8730 - 0378 = 8352
8532 - 2358 = 6174

Summary

The above is the detailed content of Example of implementing a digital black hole in Java. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn