【发布时间】:2022-01-11 16:39:04
【问题描述】:
以下代码会将字符串数组值转换为小数并按降序排列,我必须再次将其打印为字符串,而不是小数。这里的问题是,在将字符串转换为小数时,“.1”值变为“0.1”,但我需要它仅将其打印为“.1”。
代码:
import java.math.BigDecimal;
import java.util.*;
class Solution{
public static void main(String []args){
//Input
Scanner sc= new Scanner(System.in);
int n=sc.nextInt();
String []s=new String[n+2];
for(int i=0;i<n;i++){
s[i]=sc.next();
}
sc.close();
BigDecimal[] d=new BigDecimal[n];
for(int i=0;i<n;i++){
d[i]=new BigDecimal(s[i]);
}
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(d[j].compareTo(d[i]) == 0)
continue;
else if(d[j].compareTo(d[i]) > 0)
{
BigDecimal t=d[i];
d[i]=d[j];
d[j]=t;
}
}
}
for(int i=0;i<n;i++)
{
s[i]=d[i].toString();
}
//Output
for(int i=0;i<n;i++)
{
System.out.println(s[i]);
}
}
}
输入:
9
-100
50
0
56.6
90
0.12
.12
02.34
000.000
预期输出:
90
56.6
50
02.34
0.12
.12
0
000.000
-100
我的输出:
90
56.6
50
2.34
0.12
0.12
0
0.000
-100
【问题讨论】:
-
如果您希望它们以原来的样子出现,为什么不直接打印原始字符串?
标签: java arrays string bigdecimal