Вывод не является «странным» вообще - это внутреннее строковое представление объекта, созданное Object.toString()
. String[]
не переопределяет это. Если вы хотите вывести все entires, проведите через них и соедините их, лучше используйте StringBuilder
, чтобы избежать создания ненужных экземпляров String
.
public static String arrayToString (String[] array) {
StringBuilder result = new StringBuilder();
for (String value : array) {
result.append(value);
}
return StringBuilder.toString();
}
Если вам не нужен этот метод на своем собственном и хотят включить его в общем процессе реверсирования предложения, это то, как это может выглядеть. Он выполняет итерацию только один раз, итерации назад (= подсчет), чтобы отменить предложение.
public static String revSentence (String str) {
String [] givenString = str.split(" ");
StringBuilder result = new StringBuilder();
// no need for 'last', we can use i to count down as well...
for (int i = givenString.length - 1 ; i >= 0; i--) {
result.append(givenString[i]);
}
return result.toString();
}
[Изменить]: из ППО комментарии к одному из других ответов, о том, не научившись использовать StringBUilder
еще, вот метод arrayToStirng без использования одного. Обратите внимание, что это не должно делаться обычно, так как оно создает бесполезные экземпляры String
, которые не очищаются GC из-за непреложного характера String
(все экземпляры хранятся для повторного использования).
public static String arrayToString (String[] array) {
String result = "";
for (String value : array) {
result += value;
}
return result;
}
Или без метода посвящаю arrayToString:
public static String revSentence (String str) {
String [] givenString = str.split(" ");
String result = "";
for (int i = givenString.length-1 ; i >= 0 ; i--) {
result += givenString[i];
}
return result;
}
Вызов 'ToString()' на массиве не даст вам ничего полезного. Вы хотите 'StringBuilder'. – SLaks