把正整数n的每一位拆分出来,存放到数组中。例如123的拆分结果为[1,2,3],不能调用数字转字符串函数
public class DigitSplitter {
public static int[] splitDigits(int n) {
// 初始化一个足够大的数组来存储数字(假设n不会超过Integer.MAX_VALUE)
int[] digits = new int[11]; // Integer.MAX_VALUE有10位数字,加上一个额外的位置以防万一(虽然实际上不会用到)
int index = 0;
// 循环直到n变为0
while (n > 0) {
// 获取最低位的数字,并将其存储在数组中
digits[index] = n % 10;
// 去掉最低位的数字
n = n / 10;
// 移动到数组的下一个位置
index++;
}
// 创建一个新的数组,只包含实际的数字(去掉多余的空间)
int[] result = new int[index];
System.arraycopy(digits, 0, result, 0, index);
// 由于是从低位到高位存储的,需要反转数组
reverseArray(result);
return result;
}
// 辅助方法:反转数组
private static void reverseArray(int[] array) {
int left = 0;
int right = array.length - 1;
while (left < right) {
// 交换左右两边的元素
int temp = array[left];
array[left] = array[right];
array[right] = temp;
// 移动指针
left++;
right--;
}
}
public static void main(String[] args) {
int n = 123;
int[] result = splitDigits(n);
// 打印结果
for (int digit : result) {
System.out.print(digit + " ");
}
}
}