欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

如何将正整数的各个数位分开并重新组合的 JAVA 代码

最编程 2024-07-03 10:39:07
...

package math;

import java.util.Scanner;

public class Add {

public static void main(String[] args) {
System.out.println("请输入一个整数");
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
int Q = sc.nextInt();
int n = 0; // 用于记录输入的数字是几位数,n的值就是输入的位数;
int Z = 10; // 设置循环的范围
for (int i = 0; i < Z; i++) {

if (Math.pow(10, i) > Q) { // 利用循环将10的i次方倍依次增大,直到与输入的值在同一个量级时,i就是输入的总位数。
n = i;
break; // 一旦找到输入的总位数立即停止循环;
}
}

int arr[] = new int[n]; // 根据输入的总位数创建一个数组用于存放被分开的各个位数上的数;

int sum = 0; // 定义一个计数器用于依次将被分开的数存放到数组中,它的作用类似于指针;
int A = 0; // 定义一个变量;

for (int j = 1; j < Z; j++) {

if (Math.pow(10, j) > Q & sum < n) {

A = (int) Math.floor(Q / Math.pow(10, j - 1)); // A是新的Q从左到右依次被分离的数;
int T = (int) (A * Math.pow(10, j - 1)); //
Q = Q - T;// 新的Q等于旧的Q减去最接近Q的10的某次方;
arr[sum] = A; // 将分离到的数从左到右依次存放到数组中;
sum++; // 每次存放之后指针后移;
j = 1;// 使循环重新开始,分离下一个数;
}

if (Math.pow(10, j) > Q && sum < n && Q < 10) {
arr[arr.length - 1] = Q; // 直到值剩下一个小于10的数,直接存放到数组最后一个位置,循环结束;
break; // 利用break终止循环
}

}

int num = 0;// 定义一个变量
for (int k = 0; k < n; k++) {
// System.out.printf("%d\t",arr[k]); //该行代码用于检验数字是否被分开;
num += arr[k] * Math.pow(10, arr.length - 1 - k); // 该行代码将分开的数字重新组合
}
System.out.println(num); // 输出重新组合后的数即是结果
}

}