目录

Kaprekar 7641 - 1467= 6174

复制代码
package homework;

import java.util.Arrays;

import util.StringUtil;

/**
 * 
数学黑洞数6174,即卡普雷卡尔(Kaprekar)常数,
它的算法如下:
取任意一个4位数(4个数字均为同一个数的除外),
将该数的4个数字重新组合,形成可能的最大数和可能的最小数,再即将两者之间的差求出来;
对此差值重复同样过程,最后总是到达卡普雷卡尔黑洞6174,到达这个黑洞最多需要7个步骤.
例如:取1、2、3、4这4个数
大数:取这4个数字能构成的最大数,本例为4321;
小数:取这4个数字能构成的最小数,本例为:1234;
差:求出大数与小数之差,本例为:4321-1234=3087;
重复:对新数3087按以上算法求得新数为8730-0378=8352;
重复:对新数8352按以上算法求得新数为8532-2358=6174;
结论:对任何只要不是4位数字全相同的4位数,按上述算法,不超过7次激素,最终结果多无法逃出6174黑洞.
从文本框Text1中输入一个任意的数字不完全相同的四位正整数,在文本框Text2中输出掉进黑洞的步骤次数.
 *
 * Kaprekar 7641 - 1467= 6174
 *
 * @author ZengWenFeng
 * @date 2023.11.03
 * @email 117791303@qq.com
 * @mobile 13805029595
 */
public class Math_2023_11_03_Kaprekar
{

	public Math_2023_11_03_Kaprekar()
	{

	}

	public static String calc(String num)
	{
		if (num == null || num.length() != 4)
		{
			return "-1";
		}

		char[] arrChar = num.toCharArray();
		Arrays.sort(arrChar);
		System.out.println(arrChar);

		String strMin = new String(arrChar);
		System.out.println("strMin : " + strMin);
		String strMax = new StringBuilder(strMin).reverse().toString();
		System.out.println("strMax : " + strMax);

		int min = Integer.parseInt(strMin);
		int max = Integer.parseInt(strMax);
		int result = max - min;

		System.out.println(" max - min = " + strMax + " - " + strMin + " = " + result);

		if (result == 0)
		{
			return "0";
		}
		else
		{
			String strResult = Integer.toString(result);

			// 不足四位数,补前导"0"
			if (strResult.length() <= 4)
			{
				return StringUtil.getZeroStr(4 - strResult.length()) + strResult;
			}
			//
			else
			{
				return strResult;
			}
		}
	}

	public static void main(String[] args)
	{
		String num = "888823";
		System.out.println(num);

		int cnt = 0;
		while (true)
		{
			String temp = calc(num);
			cnt++;

			if (temp.equals("6174"))
			{
				calc(temp);
				break;
			}
			else if (temp.equals("0"))
			{
				System.err.println("输入值[" + num +  "]不能是4位相同数!");
				break;
			}
			else if (temp.equals("-1"))
			{
				System.err.println("输入值[" + num +  "]不是四位数!");
				break;
			}
			else
			{
				num = temp;
			}
		}

		System.out.println("cnt : " + cnt);
	}

}

2023.11.03 homework-CSDN博客

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
李少兄11 分钟前
Unirest:优雅的Java HTTP客户端库
java·开发语言·http
此木|西贝17 分钟前
【设计模式】原型模式
java·设计模式·原型模式
可乐加.糖34 分钟前
一篇关于Netty相关的梳理总结
java·后端·网络协议·netty·信息与通信
s91236010136 分钟前
rust 同时处理多个异步任务
java·数据库·rust
9号达人37 分钟前
java9新特性详解与实践
java·后端·面试
cg501741 分钟前
Spring Boot 的配置文件
java·linux·spring boot
啊喜拔牙1 小时前
1. hadoop 集群的常用命令
java·大数据·开发语言·python·scala
anlogic1 小时前
Java基础 4.3
java·开发语言
非ban必选2 小时前
spring-ai-alibaba第七章阿里dashscope集成RedisChatMemory实现对话记忆
java·后端·spring
A旧城以西2 小时前
数据结构(JAVA)单向,双向链表
java·开发语言·数据结构·学习·链表·intellij-idea·idea