Как вывести введённую строку задом наперёд?
Я преобразую строку в массив символов с помощью функции toCharArray().
Далее продвигаюсь от конца массива к началу, конец массива нахожу с помощью length. Но почему-то код не работает и выдаёт ошибку, что индекс i за пределами границ.
Мой код:
package ua.com.sololearn;
import java.util.Scanner;
public class SoloLearnTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String words = scan.nextLine();
char[] arr = words.toCharArray();
for (int i = arr.length; i > 0; i--) {
System.out.println(arr[i]);
}
}
}
Ошибка:
Hello there
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11
at ua.com.sololearn.SoloLearnTest.main(SoloLearnTest.java:11)
Process finished with exit code 1
Ответы (2 шт):
Автор решения: Phoenixdev
→ Ссылка
Это потому, что массивы индексируются с 0. Вы же берете длину массива (например 7) и в первой итерации вы подставляете 7-ку в качестве индекса, а такого элемента не существует, крайний индекс в вашем массиве будет 6. Вот вы и ловите данную ошибку.
for(int i = arr.length-1;i>=0;i--){
System.out.println(arr[i]);
}
Автор решения: Антоша
→ Ссылка
Можно без циклов вообще:
StringBuilder output = new StringBuilder(input).reverse();