我想通过按字母顺序对数组中的字符串进行排序,但是我在参数类型中出错。
public class BubbleSort {
public static String[] sortStringArray(String[] stringArray) {
int s = stringArray.length;
String temp;
for (int i = 0 ; i < s; i++) {
for (int j = 1; j < (s - i); j++) {
String a1 = stringArray[j - 1];
String b1 = stringArray[j];
int result = a1.compareTo(b1);
if (result > stringArray[j]) {
temp = stringArray[j - 1];
stringArray[j - 1] = stringArray[j];
stringArray[j] = temp;
}
}
}
return stringArray;
}
}
答案 0 :(得分:2)
由于您在String
上呼叫compareTo(Object)
,您需要检查结果是否大于零:
if (0 < result) { // i.e. a1 is smaller than b1
//swap values as usual
}
答案 1 :(得分:0)
要按自然顺序对String数组进行排序,可以使用Arrays.stream
例如:
String[] s = {"b", "c", "a", "aaa", "abc"};
s = Arrays.stream(s).sorted().toArray(String[]::new);
给出s= [a, aaa, abc, b, c]
答案 2 :(得分:-1)
if (result > stringArray[j])
result
是一个整数,stringarray[j]
是一个字符串。
如果您的字符串是像stinrgArray这样的整数[j]值是&#34; 11&#34;那么您就不能像这样整数进行比较。并且你想比较它需要先将它解析为整数:
if(result > Integer.parseInt(stringArray[j]))