Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 选择排序字符串_Java_String_Sorting_Selection Sort - Fatal编程技术网

Java 选择排序字符串

Java 选择排序字符串,java,string,sorting,selection-sort,Java,String,Sorting,Selection Sort,我读了一份关于城市及其人口的文件,我试图用选择排序法按字母顺序对城市进行排序。 问题是,出于某种原因,它以一种奇怪的方式对其进行排序。“排序”列表的顺序是“abdchefhg…”我试着跟随它,但我不明白它在哪里出错。代码如下: //Selection for (int i = 0; i < cities.size() - 1; i++) { int minPos = i; for (int j = i + 1; j < cit

我读了一份关于城市及其人口的文件,我试图用选择排序法按字母顺序对城市进行排序。 问题是,出于某种原因,它以一种奇怪的方式对其进行排序。“排序”列表的顺序是“abdchefhg…”我试着跟随它,但我不明白它在哪里出错。代码如下:

    //Selection
    for (int i = 0; i < cities.size() - 1; i++) 
    {
        int minPos = i;
        for (int j = i + 1; j < cities.size(); j++) 
        {
            if (cities.get(j).compareToIgnoreCase(cities.get(minPos)) < -1)
                minPos = j;
        }
        swap(cities, minPos, i);
    }
    System.out.print("\nSelection: ");
    for(int i = 0; i < cities.size(); i++)
        System.out.print(cities.get(i) +"|");

private static void swap(ArrayList <String> a, int i, int j) 
{
    String temp = a.get(i);
    a.set(i, a.get(j));
    a.set(j, temp);
}
//选择
对于(int i=0;i
知道怎么了吗


谢谢

正如其他人所提到的,您的问题几乎肯定是您的
。<-1
比较,这在比较法中基本上没有意义。如中所述,Java中的比较通常通过返回

负整数、零或正整数,因为此对象小于、等于或大于指定对象

遵循同样的规则:

这些契约故意不说明这些负数或正数可能是什么,因此实现可以做任何最简单的事情。许多实现将显式返回
-1
0
1
,但其他实现,包括
字符串中的实现,使用减法作为快捷方式,返回所比较项目之间的差异,例如
x.compareTo(y)
不返回x-y
。如果
x
y
相同,则结果为
0
,否则如果
x
较小,则返回负数;如果
x
较大,则返回正数


简而言之,您必须始终使用
0
作为比较点。

您是否尝试过使用
…<0而不是
。<-1
?为什么要使用Yep,这就是问题所在。这是我第一次使用字符串比较,所以我对它有点陌生。非常感谢。欢迎光临。我建议您阅读javadoc中的compareTo方法,这样您就可以完全理解发生了什么。
Returns:
    a negative integer, zero, or a positive integer as the specified
    String is greater than, equal to, or less than this String, ignoring
    case considerations.