Problem: Ich habe eine bestimmte Sortiermethode verwendet, aber es hat nicht so funktioniert, wie ich es erwartet hatte und ich verstehe nicht, wo ich mich möglicherweise irrte.Warum kann meine Sortiermethode für Bigdecimal-Zahlen nicht sortiert werden?
Mein Code nahm Eingang (die Zahlen sind) als Saiten in ein String-Array und dann konvertiert sie in BigDecimal Zahlen, während ich sie verglichen werden, und sie dann als Zeichenfolgen entsprechend in dem Array umgeordnet
der Code in Frage:
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
Constraints: s[n]
sollte ein String-Array sein und wenn zwei Eingänge gleiche Werte haben sie sollten wir sie eingegeben in dem Array in derselben Reihenfolge aufgeführt werden.
ich verstehe nicht, warum 0.12 und .12 nicht in der gleichen Reihenfolge ausgegeben werden, wie ich sie eingegeben habe, wenn der Algorithmus irgendwo falsch ist, auch 0 und 000.000 hätten nicht in der gleichen Reihenfolge erscheinen sollen wie ich sie eingegeben habe , aber stattdessen taten sie es.
Warum Ihr String Array enthalten Strings nicht? – byxor
eigentlich ist es die Frage Einschränkung, dass Zahlen als Strings eingegeben werden müssen –
Ich denke, Sie sollten sie in "" umgeben, um sie String-Literale (zB '{" -100 "," 50 "'). Vielleicht Ich verpasse hier eine Art von fancy Java-Syntax, aber es bläst mir, dass dies kompiliert – byxor