62,614
社区成员
发帖
与我相关
我的任务
分享
public static void main(String[] args) {
int res = 1234;
int[] arrTemp = new int[2];
int n = 0;
for (;; n++) { // 循环迭代
res = doMinus(res);
arrTemp[n & 1] = res; // 交替赋值
if (arrTemp[0] == arrTemp[1]) {
break; // 出现重复,则退出
}
System.out.println("The " + (n + 1) + "th result is: " + res);
}
System.out.println("Loop finish after [" + n + "] times");
}
public static int doMinus(int input) {
int[] arr = int2arr(input);
Arrays.sort(arr);
int max = arr2Int(arr, false); // 倒序-从大到小
int min = arr2Int(arr, true); // 正序-从小到大
return max - min;
}
public static int[] int2arr(int num) {
// 使用String转换,是为了数位可扩展
char[] chrs = Integer.toString(num).toCharArray();
int[] arr = new int[chrs.length];
for (int i = 0; i < chrs.length; i++) {
arr[i] = chrs[i] - '0'; // 相减得出int
}
return arr;
}
public static int arr2Int(int[] arr, boolean isAsc) {
int base = 1;
int sum = 0;
if (isAsc) { // 正序-从小到大
for (int i = arr.length - 1; i >= 0; i--) {
sum += arr[i] * base;
base *= 10;
}
}
else { // 倒序-从大到小
for (int n : arr) {
sum += n * base;
base *= 10;
}
}
return sum;
}