Я пытаюсь написать программу, которая берет строку, разбивает ее на символы и печатает каждый символ назад. Я как-то понимаю, в чем проблема, я просто не знаю, как это исправить. Вот мой код:
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++;
}
}
По какой-то причине он просто печатает все одно письмо, и я не уверен, почему.
Проблема в том, что 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));
}
Я считаю, что самый простой подход для вашей задачи - использовать класс StringBuilder
.
public static void backwards(String theFruit) {
return new StringBuilder(theFruit).reverse().toString();
}
Вы можете использовать класс StringBuffer.
public static void main(String[] args) {
StringBuffer fruit = new StringBuffer("apple");
System.ouyt.println(fruit.reverse());
}
декрементирует length
в while
циклы. и не увеличивайте counter
.
в виде:
while(length >= counter) {
char theCharacter = theFruit.charAt(length);
System.out.println(theCharacter);
length--;
}
Уменьшить значение длины
while(length >= counter) {
char theCharacter = theFruit.charAt(length);
System.out.println(theCharacter);
length--;
}
с вашим подходом вы печатаете последний символ каждый раз, потому что значение length
никогда не менялось
length