базовый вопрос кодирования Java о обратном порядке слов для JAVA - PullRequest
0 голосов
/ 23 сентября 2019

Я ищу способ изменить слово в Java.Это мой код, и в нем возникают ошибки.

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

import java.util.Scanner;

public class Robot {

    public static void reverse(String text) {
        int leng = text.length();
        int i = 0;
        while (leng-i>=0){System.out.print(text.charAt(leng-i));
        i++;
        }
    }

    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        System.out.println("Type in your text: ");
        String text = reader.nextLine();
        System.out.print("In reverse order: ");
        reverse(text);
    }

}

Я ожидал, что произойдет обратный порядок слов, но это не так.

Ответы [ 2 ]

2 голосов
/ 23 сентября 2019

Это должно быть

int i = 1;

В противном случае вы получите StringIndexOutOfBoundsException, поскольку text.length() никогда не будет допустимым индексом.

Чтобы сделать его немного короче (и круче)), вы можете написать

System.out.print(text.charAt(leng - i++));

Хотя, мы обычно делаем

System.out.print(new StringBuilder(text).reverse());
1 голос
/ 23 сентября 2019

Ваша проблема здесь:

int leng = text.length();

массивы в java индексируются 0, что означает, что последний символ в строке имеет индекс (text.length()-1), а неиз text.length()

Таким образом, вы можете установить leng на text.length()-1, или вы можете установить i на 1

...