Я совершенно ошеломлен тем, почему charAt()
работает в некоторых сценариях, но не с другими. Я занимаюсь упражнениями, изучая Java, и один из них должен взять строку и вернуть ее в обратном порядке.Использование charAt() для изменения массива символов
Мой рабочий код:
public String reverseString(String tempStr){
int initialindex = tempStr.length()-1;
int reverseindex = 0;
char tmp;
char[] array = new char[tempStr.length()];
for(int tempchar : array){
tmp = tempStr.charAt(initialindex);
array[reverseindex] = tmp;
initialindex--;
reverseindex++;
}
String returnstr = new String(array);
return returnstr;
}
Проблема я столкнулся использует следующие for
оператор печатает тарабарщина:
for(int tempchar : array){
array[reverseindex] = tempStr.charAt(initialindex);
initialindex--;
reverseindex++;
}
Были, возможно, десятков различных вариантов использования while
петли, стандартный for
петли и несколько других версий кода, которые были уродливы и не работали. Почему я сделал поле char tmp
, поместив проверенный символ в указанное поле, а затем используя указанное поле для ввода данных в массив?
Кроме того, почему я не могу просто вернуть строку, используя return array.toString();
?
Редактировать: Я использую последнее Eclipse, которое я загрузил сегодня, переключился с netbeans.
Хммм ... Я попробовал другой метод, и я раздражен. Он работает сейчас. Что касается второго ответа, я получил значение '[C @ 3956f14c'. Это хэш-код объекта, о котором вы говорили? – AbeLinkon
В зависимости от реализации функция по умолчанию по умолчанию Object.toString() возвращает 'this.getClass(). GetName() + '@' + Integer.toHexString (this.hashCode());' (или какой-то аналогичный вариант) ,Поэтому я предполагаю, что в этом случае '[C' is 'array' (потому что это своего рода специальный объект), а' 3956f14c' - это hashcode – Trasvi