向后打印字符串的Java程序

时间:2015-04-12 18:24:05

标签: java string character

我正在尝试编写一个带字符串的程序,将其分解为字符,然后向后打印每个字符。我有点看问题是什么,我只是不确定如何解决它。这是我的代码:

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++;
    }
}

由于某种原因,它只打印所有一个字母,我不知道为什么。

5 个答案:

答案 0 :(得分: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 :(得分:1)

我认为最简单的方法是使用StringBuilder类。

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

答案 2 :(得分:0)

递减length循环中的while。并且不会增加counter变量。

as:

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

答案 3 :(得分:0)

减少长度

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

根据您的方法,您每次都打印最后一个字符,因为length值永远不会改变

Demo

答案 4 :(得分:0)

您可以使用StringBuffer Class。

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