Java:选择String类数组

时间:2013-05-10 12:26:16

标签: java string algorithm sorting

我正在研究学校项目的一些排序算法,我遇到了问题。 下面的代码没有对数组进行排序,我尝试了相同的代码与数组(唯一的变化是在if中)并且它正在工作但是现在使用String数组并且使用compareTo它不能正常工作它只是放入“随机”顺序的项目。

public static void selectionSortISBN(Book pin[], int booksCounter) {
    for (int x = 0; x < booksCounter; x++) {
        int minIndex = x;
        for (int y = x + 1; y < booksCounter; y++) {
            if (pin[y].getISBN().compareTo(pin[minIndex].getISBN()) < 0) {
                minIndex = y;
            }
        }
        Book temp = pin[x];
        pin[x] = pin[minIndex];
        pin[minIndex] = temp;
    }
}

修改

我改变了我的内心:

        for (int y = x + 1; y < booksCounter; y++) {
            int com=pin[y].getISBN().compareTo(pin[minIndex].getISBN());
            System.out.println(pin[y].getISBN()+"   "+pin[minIndex].getISBN()+"  =   "+com);
        }

我得到的输出就是这个

1537   1485  =   1
596   1485  =   4
1164   1485  =   -3
909   1485  =   8
596   1537  =   4
1164   1537  =   -4
909   1537  =   8
1164   596  =   -4
909   596  =   4
909   1164  =   8

2 个答案:

答案 0 :(得分:4)

这是正常的,你犯的错误是你希望“596”低于“1485”,如果不是,你将它们排序为字符串,596&gt; 1485就像BA&gt; AAAABA。如果要按字母数字比较数字,请添加前导零。

答案 1 :(得分:0)

如果您只处理数字,则将字符串数组转换为数字数组