java为什么我的Bigdecimal数字排序方法无法排序?
问题:我采用了某种排序方法,但结果并不像我预期的那样,我无法理解我可能在哪里出错
我的代码将输入(即数字)作为字符串放入字符串数组,然后在比较它们时将它们转换为Bigdecimal数字,然后在数组中将它们作为字符串进行相应的重新排列
问题代码:
String s[]={-100, 50, 0, 56.6, 90, 0.12, .12, 02.34, 000.000};
for(int i=0;i<n-1;i++)
{
for (int j =i+1; j<n; j++)
{
BigDecimal d = new BigDecimal(s[j]);
BigDecimal a = new BigDecimal(s[i]);
if(a.compareTo(d)==-1)
{
String m = s[j];
s[j]=s[i];
s[i]=m;
}
}
}
//output :90, 56.6, 50, 02.34, .12, 0.12, 0, 000.000, -100
//expected output :90, 56.6, 50, 02.34, 0.12, .12, 0, 000.000, -100
约束:s[n]
应该是一个字符串数组,如果两个输入具有相同的值,那么它们应该按照我们输入它们的相同顺序列在数组中
我不明白为什么0.12和.12的输出顺序与我输入的不一样,如果算法出了问题,那么即使是0和000.000也不应该与我输入的顺序相同,但它们确实出现了
# 1 楼答案
您可以使用
Stream
并将自定义比较器传递给sorted
,然后collect
并打印。像我得到(按要求)
# 2 楼答案
好吧,因为你想使用字符串数字,你必须用引号把它们括起来,但是你的排序可以更容易阅读。我建议如下