문제 : 내가 특정 정렬 방법을 사용했으나 예상대로 작동하지 않았고 어디에서 잘못했는지 이해하지 못했습니다.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이 내가 입력 한 것과 같은 순서로 나타나서는 안된다. , 대신에 그들은했다.
은 왜 당신의 문자열 배열 문자열을 포함 않는거야? – byxor
실제로 숫자를 문자열로 입력해야한다는 질문 제한이 있습니다 –
문자열 리터럴 (예 :'{ "-100", "50"'...)으로 만들려면' "로 묶어야합니다. 여기에 멋진 자바 문법이 없지만 컴파일 할 때 마음이 아프다. – byxor