В настоящее время вы меняете местами первый и последний элементы n
раз, где n
- размер массива. Это делает так, что когда у вас есть четное количество элементов, например 2, вы меняете местами первый и последний элементы, а затем меняете их местами обратно в исходное положение, которое не заменяется. Вот почему он работает для нечетного количества элементов, поскольку вы меняете местами первый и последний элементы четное количество раз, а затем еще раз. Если вы просто хотите поменять местами первый и последний элементы, вы можете просто избавиться от for
l oop, который у вас есть, и он будет работать правильно.
public void randomTest() {
String str ="my is name";
//Step1: split so that I can get them in in array
String [] arrStr= str.split(" ");
//Step2: Using temp swap 1st and last
String temp = arrStr[0];
arrStr[0] = arrStr[arrStr.length-1];
arrStr[arrStr.length-1] = temp;
}
После этого, если вы захотите объедините строки вместе, вы можете использовать
str = String.join(" ", arrStr);
или объект StringBuilder, подобный этому.
StringBuilder sb = new StringBuilder(arrStr[0]);
for (int i = 0; i < arrStr.length; i++) {
sb.append(" ").append(arrStr[i]);
}
str = sb.toString();
Эффект любого из них превратит my name is foo
в foo name is my
, в основном меняя местами первое и последнее слово, и будет работать для строки с любой длиной или количеством слов.