这篇文章主要介绍了Java编程中如何实现数字黑洞算法游戏,其中涉及到了数组、scanner、if语句等Java编程的基础知识,需要的朋友可以参考下

给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。

例,我们从6767开始,将得到

7766 - 6677 = 1089

9810 - 0189 = 9621

9621 - 1269 = 8352

8532 - 2358 = 6174

7641 - 1467 = 6174

现给定任意4位正整数,请编写程序演示到达黑洞的过程。

输入格式:

输入给出一个(0, 10000)区间内的正整数N。

输出格式:

如果N的4位数字全相等,则在一行内输出“N - N = 0000”;否则将计算的每一步在一行内输出,直到6174作为差出现,输出格式见样例。注意每个数字按4位数格式输出。

输入样例1:

6767

输出样例1:

7766 - 6677 = 1089

9810 - 0189 = 9621

9621 - 1269 = 8352

8532 - 2358 = 6174

输入样例2:

2222

输出样例2:

2222 - 2222 = 0000

具体代码如下:

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;

}

}

输出如下:

4695

9654 - 4569 = 5085

8550 - 0558 = 7992

9972 - 2799 = 7173

7731 - 1377 = 6354

6543 - 3456 = 3087

8730 - 0378 = 8352

8532 - 2358 = 6174

总结

java黑洞数字_Java中实现数字黑洞的示例相关推荐

  1. java url类_Java中的URL类和示例 - Break易站

    URL类是Internet上任何可用资源的网关.类URL表示统一资源定位符,它是指向万维网上"资源"的指针.资源可以指向简单的文件或目录,也可以引用更复杂的对象,例如对数据库或搜索 ...

  2. map java 初始化赋值_Java 中 HashMap 初始化时赋值(示例代码)

    1.HashMap 初始化的文艺写法 HashMap 是一种常用的数据结构,一般用来做数据字典或者 Hash 查找的容器.普通青年一般会这么初始化: HashMap map = new HashMap ...

  3. boost::gil模块数字扩展中的 convolve_rows() 和 convolve_cols() 示例

    boost::gil模块数字扩展中的 convolve_rows 和 convolve_cols示例 实现功能 C++实现代码 实现功能 boost::gil模块数字扩展中的 convolve_row ...

  4. java 字符串中提取数字_java中如何提取字符串中的数字?

    展开全部 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; publi ...

  5. 中判断字符串是否为空_java中的数字以及如何判断字符串是不是数字

    01 前言 数字是计算机科学的根本,那么java中数字是怎样来表示呢?规则又是怎样呢?今天我们来探讨一下这个话题.数字在某些领域经常用字符串来进行表示和传递.那么我们可以从判断java中一个字符串是否 ...

  6. [剑指offer]面试题第[53-1]题[JAVA][在排序数组中查找数字-1][二分法][暴力法]

    [问题描述][中等] 统计一个数字在排序数组中出现的次数. 示例 1:输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 示例 2:输入: nums = [5,7, ...

  7. java bigdecimal赋值_Java中BigDecimal类介绍及用法(亲测)

    Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高精度计算. 其中 BigInteger 类是 ...

  8. java range(10)_Java 中的十个 ” 单行代码编程 ” ( OneLiner )

    原标题:Java 中的十个 " 单行代码编程 " ( OneLiner ) 作者:飒然Hang 原文链接:www.rowkey.me/blog/2017/09/09/java-on ...

  9. java 数据类型分为_JAVA中分为基本数据类型及引用数据类型

    byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值 ...

  10. java 锁定界面_Java中的锁

    java中的锁遵循不同的分类方法,太多了,乐观锁/悲观锁,可重入锁/不可重入锁,有些第一遇到的话,可能还有点懵.刚好周末有时间学习下,总结和梳理下. 一总述 总的来说对java的锁有以下七种分类方法: ...

最新文章

  1. 基于飞桨PaddlePaddle的语义角色标注任务全解析
  2. 重大合同实为旧事 数据港信披被上交所问询
  3. python 画希尔伯特曲线
  4. html录音并转为音频文件,HTML5音频API Web Audio
  5. JavaScript 模块化七日谈
  6. SAP Spartacus Multi-Site Configuration
  7. 【论文】PathQG: 基于事实的神经问题生成
  8. ThinkPHP5.1设置404页面
  9. Linux下PHP开启Oracle支持(oci8)
  10. GEOMETRIC APPLICATIONS OF BSTS
  11. 2018 06 01 第一次博客 自然语言处理
  12. 诚风老师-直销立法十年 直销企业迎来新机遇
  13. python之if-else_Python中的if-else
  14. WebStorm-2021.1.1下载及安装
  15. 用HTML+CSS实现百度静态页面
  16. VSCode 格式化 cpp 文件时配置左大括号不换行
  17. 校外活动计算机社团策划书,大学生社团文化节策划书总方案范文
  18. element plus 表格合计
  19. 【操作系统】-- 动态分区分配算法(首次适应算法FF、最佳适应算法BF、最坏适应算法WF、循环首次适应算法NF)
  20. Python的编译器

热门文章

  1. 文章-编程需要知道多少数学知识?
  2. 假设检验与常见的统计检验方法
  3. python中sqrt函数用法_Python : sqrt() 函数
  4. 调用聚合数据新闻头条API
  5. linux安装rtl8192cu网卡驱动,ubuntu更新rtl8192cu驱动
  6. ImageNet缔造者:让冰冷的机器读懂照片背后的故事
  7. 汕头大学计算机专业就业,汕头大学毕业生最后怎样了?17%进入世界和中国500强,月薪5185元...
  8. python123月份名称缩写_月份及其缩写
  9. 酷狗音乐flac转换成mp3格式
  10. 运行 Android 的笔记本 Cosmo 已众筹超 130 万美元