Java-программа, которая печатает строку назад

1

Я пытаюсь написать программу, которая берет строку, разбивает ее на символы и печатает каждый символ назад. Я как-то понимаю, в чем проблема, я просто не знаю, как это исправить. Вот мой код:

public static void main(String[] args) {
    //takes a string and prints all the letters backwards all on one line

    String fruit = "apple";
    backwards(fruit);
    }

public static void backwards(String theFruit) {
    int length = theFruit.length() - 1;
    int counter = 0;
    while(length > counter) {
        char theCharacter = theFruit.charAt(length);
        System.out.println(theCharacter);
        counter++;
    }
}

По какой-то причине он просто печатает все одно письмо, и я не уверен, почему.

  • 1
    длина никогда не меняется, и вы всегда выводите символ в length
Теги:
string
character

5 ответов

1
Лучший ответ

Проблема в том, что length не изменяется, и вы используете длину для своей инструкции println.

Вместо добавления к счетчику в конце вашего цикла вычитайте из длины. Затем вы должны изменить свое время, чтобы проверить, что это >= счетчик:

while (length >= counter)
{
    System.out.println(theFruit.charAt(length));
    length--;
}

Вы также можете изменить свой цикл и вместо этого использовать цикл for:

for (int i = length; i >= 0; i--)
{
    System.out.println(theFruit.charAt(i));
}
1

Я считаю, что самый простой подход для вашей задачи - использовать класс StringBuilder.

public static void backwards(String theFruit) {
    return new StringBuilder(theFruit).reverse().toString();
}
0

Вы можете использовать класс StringBuffer.

public static void main(String[] args) {
    StringBuffer fruit = new StringBuffer("apple");
    System.ouyt.println(fruit.reverse());
    }
0

декрементирует length в while циклы. и не увеличивайте counter.

в виде:

while(length >= counter) {
    char theCharacter = theFruit.charAt(length);
    System.out.println(theCharacter);
    length--;
}
0

Уменьшить значение длины

while(length >= counter) {
        char theCharacter = theFruit.charAt(length);
        System.out.println(theCharacter);
        length--;
}

с вашим подходом вы печатаете последний символ каждый раз, потому что значение length никогда не менялось

демонстрация

Ещё вопросы

Сообщество Overcoder
Наверх
Меню