我正在尝试编写一个带字符串的程序,将其分解为字符,然后向后打印每个字符。我有点看问题是什么,我只是不确定如何解决它。这是我的代码:
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++;
}
}
由于某种原因,它只打印所有一个字母,我不知道为什么。
答案 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
值永远不会改变
答案 4 :(得分:0)
您可以使用StringBuffer Class。
public static void main(String[] args) {
StringBuffer fruit = new StringBuffer("apple");
System.ouyt.println(fruit.reverse());
}