2015-04-12 36 views
1

我试图编写一个程序,该程序需要一个字符串,将其分解为字符,并向后打印每个字符。我想看看问题是什么,我只是不知道该如何解决。这里是我的代码:向后打印字符串的Java程序

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

长度永远不会改变,你总是输出char'length' –

回答

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)); 
} 
0

while循环中递减length。并且不要增加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价值从未改变

Demo

0

可以使用StringBuffer类。

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

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

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