質問のタイトルは、私は私のソート方法がこのソート方法は、特定の入力に対して異なる動作をするのはなぜですか?
質問制約別々の入力に対して異なる振る舞いない理由を理解することができませんとおり:文字列配列がn
数字の入力に使用されるべきであり、その後、降順でそれらを並べ替えますあなたが000.0
と.0
のような値を持つ数字に遭遇した場合、それらは私が入力したのと同じ順序でリストされなければならず、入力されたのと同じフォーマットで出力されるべきです。
私の質問:n=2
ため iが0.12,.12
入ったとき、私のコードの出力0.12, .12
が、私は1, 0.12,.12
その出力1,.12, 0.12
を(代わりに1,0.12,.12
の)ので、入力されたときn=3
ためながら、これはなぜ起こるのでしょうか?私のコードで少し修正すればこの不具合を修正できますか?
コード:
String[] s= new String[n];
//input :
for(int i=0;i<n;i++)
s[i]=sc.next();
//Sorting :
for(int i=0;i<n;i++)
{
BigDecimal d=new BigDecimal(s[i]);
for (int j =i+1; j<n; j++)
{
BigDecimal a=new BigDecimal(s[j]);
if(d.compareTo(a)==-1)
{
String m = s[j];
s[j]=s[i];
s[i]=m;
}
}
}
//Output :
for(int i=0;i<n;i++)
System.out.println(s[i]);
compareto
方法、Bigdecimal
タイプ番号.12
と0.12
として等しい0.12
と.12
として等しいが、String
型変数を扱う際に考慮していないと見なしを取り扱う場合にのみ比較しながらそう私はそれらをBigdecimal
タイプに変換しましたが、表示するためには、タイプが四捨五入されているのでStrings
のように表示しました。.12
として0.12
ですが、Strings
しないでください。
を何あなたは前の質問でやるように言われましたか? https://stackoverflow.com/questions/47114295/why-does-my-sorting-method-for-bigdecimal-numbers-fails-to-sortまた、コードをインデントして読めないようにしてみてはどうでしょうか? –
@JBNizetいいえ私はそのプロセスを使用し、すべての出力は完全にうまくいっていました。ちょっとちょっと気に入りました。 –