我正在尝试创建一个代码,其中将采用如下数字:
"787191230"
并返回:
"0 1 1 2 3 7 7 8 9"
现在,我的错误是我的代码以某种方式正确打印出第一个,然后开始添加 LOTS 的 0,我认为这是一种模式。每次增加的 0 的数量似乎一直在下降,但这很烦人。
我的主要代码(一切都完成了):
import java.util.Arrays;
import java.util.Scanner;
import java.io.File;
import java.io.IOException;
import static java.lang.System.*;
public class NumberSorter
{
static int count = 0;
private static int getNumDigits(int number)
{
while(number>0){
number=number/10;
count++;
}
return count;
}
public static int[] getSortedDigitArray(int number)
{
int[] sorted = new int[getNumDigits(number)];
for(int a = 0; a<sorted.length; a++)
{
sorted[a] = number%10;
number = number/10;
}
for(int a = 0; a<sorted.length; a++)
{
int y = a;
for(int b = a+1; b<sorted.length; b++)
{
if(sorted[b]<sorted[y])
{
y = b;
}
}
if(y != a)
{
int temp = sorted[y];
sorted[y]=sorted[a];
sorted[a]=temp;
}
}
return sorted;
}
}
测试用例代码(我尝试解码的所有数字都在其中):
public class NumberSorterRunner
{
public static void main(String args[])
{
int[] cases = {567891, 901912468, 864213507, 898777, 234422, 29826};
for( int test : cases )
{
int[] one = NumberSorter.getSortedDigitArray( test );
for(int item : one)
{
System.out.print(item + " ");
}
System.out.println();
}
}
}
最后但并非最不重要的是:输出:
1 5 6 7 8 9
0 0 0 0 0 0 0 1 1 2 4 6 8 9 9
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 8 8 9
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 3 4 4
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 6 8 9
任何帮助,主要是提示,都会让我非常感激!我无法弄清楚这有什么问题!提前致谢。