我有两个阵列用于温度,一个用于城市。如果两个温度相同,则相应的城市必须按字母顺序排列。例如
--->这是排序代码。
public static void sort(String[] x , double[] y) {
boolean doMore = true;
while(doMore) {
doMore = false;
for(int i=0; i< x.length-1; i++) {
if(y[i] == y[i+1] && x[i] < x[i+1]) {
String temp2 = x[i];
x[i] = x[i+1];
x[i+1] = temp2;
} else if (y[i] < y[i+1]) {
double temp = y[i];
y[i] = y[i+1];
y[i+1] = temp;
String temp2 = x[i];
x[i] = x[i+1];
x[i+1] = temp2;
doMore = true;
}//if
}//for 2
}//while
}// sort */
问题在于if(y[i] == y[i+1] && x[i] < x[i+1])
我不能只将2个蜇与运算符>
进行比较。我也不能使用任何现成的排序方法。
有谁知道如何按字母顺序对字符串进行排序?
答案 0 :(得分:4)
String
为Comparable
,因此您可以使用s1.compareTo(s2)
有关详细信息,请参阅String.compareTo
;它会返回负数,0或某些正数,这取决于s1是否按字典顺序排在s2之前,也就是说s1是否会在字典中的s2之前。
答案 1 :(得分:1)
目前实施的最接近的答案是G. Bach的;你应该通过他的答案来寻找一个简单的解决方案。
在盒子外思考一下......
你当前的实现有一个潜在的缺点,你的阵列可能会失去同步的索引,这些索引最终会导致错误城市的温度升高。你可以尝试一个自定义类型,它封装了两个fiels并有一个列表。有点像...
public class CityTemperatureInfo implements Comparable<CityTemperatureInfo>
{
public string cityName;
public double temperature;
...
}
然后您的应用会将数据用作List<CityTemperatureInfo>
。这将确保城市名称和温度始终位于列表中的相同位置。如果您使该课程具有可比性,您可以实施int compareTo(CityTemperatureInfo other)
方法,该方法允许您在列表上进行简单的调用排序。
通常,最好将相关数据保存在一起,以避免数据变得不同步的潜在问题。