Может кто-нибудь объяснить, как revWord печатается в обратном порядке?

#java

Вопрос:

 String word = "elephant";
String revWord = "";
for (int i = 0; i < word.length(); i  ) {
    revWord = word.charAt(i)   revWord;
}
System.out.println("Word: "   word   " in reverse is "   revWord);
 

Я знаю, как для петель word и charAt и инкрементации

Я просто не понимаю, как это меняет дело

Это и есть результат:

 Word: elephant in reverse is tnahpele
 

Комментарии:

1. Чего бы вы ожидали от него, если бы это было revWord = revWord word.charAt(i); так ?

Ответ №1:

Лучший способ понять ваш код-это взять лист бумаги и проработать каждую итерацию цикла, пока он не «щелкнет» у вас в голове. Давайте введем трехсимвольную строку ABC , чтобы посмотреть, что произойдет:

 after first iteration:
revWord = A   "" = A

after second iteration:
revWord = B   A = BA

after third iteration:
revWord = C   BA = CBA
 

По сути, на каждом шаге цикла он помечает следующую букву в начале текущей обратной строки. Как вы можете видеть выше, это приводит к изменению порядка символов во входном слове.

Ответ №2:

это из-за этой строки: revWord = word.charAt(i) revWord;

каждый раз, когда ваш цикл завершается, выберите символ и поместите его в начало нового слова. это позволяет каждый раз делать шаг вперед и ближе к концу строки символы помещать их в первую строку revWord