Ich möchte die Zeichenfolgen im Array sortieren, indem ich sie alphabetisch sortiere. Bei Argumenttypen wird jedoch ein Fehler angezeigt.
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;
}
}
Antworten:
2 für die Antwort № 1Da rufst du an compareTo(Object)
auf String
s, Sie müssen dann überprüfen, ob das Ergebnis größer als Null ist:
if (0 < result) { // i.e. a1 is smaller than b1
//swap values as usual
}
0 für die Antwort № 2
Verwenden Sie diese Option, um ein String-Array in natürlicher Reihenfolge zu sortieren Arrays.stream
z.B:
String[] s = {"b", "c", "a", "aaa", "abc"};
s = Arrays.stream(s).sorted().toArray(String[]::new);
gibt s= [a, aaa, abc, b, c]
-1 für die Antwort № 3
if (result > stringArray[j])
result
ist eine ganze Zahl, stringarray[j]
ist eine Zeichenfolge.
Sie können nicht mit einer solchen Ganzzahl vergleichen, wenn Ihre Zeichenfolge eine Ganzzahl wie stinrgArray [j] ist, der Wert "11", und wenn Sie sie vergleichen möchten, müssen Sie sie zuerst mit einer Ganzzahl analysieren:
if(result > Integer.parseInt(stringArray[j]))