我需要编写一个方法,该方法将返回由给定数组中的元素组成的多维数组,每行应具有具有相应数字位数的数字,例如,第一行应具有一位数字,第二行应具有数字两位数,第三行数字3位。
我设法对给定的数组进行排序。我进行了惨痛的尝试,以计算一个数字有多少位数。我无法理解下一步该怎么做。
感谢任何帮助。
class test {
public static void main(String [] args){
int arr[] = {20,11,100,9,3,200,4000};
method(arr);
}
public static int[][] method(int arr[]){
int arr1[][] = new int[50][50];
for(int j=0;j<arr.length-1;j++){
int minIndex = j;
for(int i=j+1;i<arr.length;i++){
if(arr[minIndex]>arr[i]){
minIndex = i;
}
}
int temp = arr[minIndex];
arr[minIndex] = arr[j];
arr[j] = temp;
}
int k =0;
while(k<arr.length) {
int counter = 0;
while (arr[k] != 0) {
arr[k] /= 10;
counter++;
}
k++;
}
}
}
答案 0 :(得分:0)
使用List可以更轻松地完成此操作,因为向数组添加元素并不容易。 阅读下面代码中的注释以查看其工作原理
public static void main(String args[]) throws Exception {
int arr[] = {20,11,100,9,3,200,4000};
int[][] sortedArray = new int[50][]; // fixing the size to 50 so we can go up to 50 digits, that could also be dynamic but it would make the code heavier
int nbDigits;
int[] tmpArray;
for(int i : arr) {
// get the number of digits
nbDigits = nbDigits(i);
// retrieve the array to add the integer to
tmpArray = sortedArray[nbDigits-1];
// add the integer to the array
tmpArray = addToArray(tmpArray, i);
// stick back your array in the multidimensional array
sortedArray[nbDigits-1] = tmpArray;
}
}
此方法将元素添加到给定数组。
private static int[] addToArray(int[] array, int n) {
int[] returnArray;
if(array == null) {
returnArray = new int[1];
returnArray[0] = n;
} else {
// copy the array in an other array 1 bigger
returnArray = Arrays.copyOf(array, array.length + 1);
// add your number at the end
returnArray[array.length] = n;
}
return returnArray;
}
此方法通过将其设为字符串并返回其长度来计算整数的位数
private static int nbDigits(int n) {
return String.valueOf(n).length();
}