0

我这里有一个向后显示字符串的方法。

public static String ReverseStr(String backward) {
       String newString = "";
       for (int i=0; i<backward.length(); i++) {
          newString = backward.charAt(i) + newString;
       }
       return newString;
}

它可以正常工作,但我想以另一种方式进行,即使用 for 循环,使用带有两个参数的方法获取字符串中的每个字符 substring ,从最后一个字符开始,然后将该单字符子字符串与新字符串连接起来每次通过循环。

我试过这个:

public static String ReverseStr(String backward) {
       String newString = "";
       for (int i=0; i>backward.length(); i--) {
          String subChar = backward.substring(backward.length()-1);
          newString += subChar;
       }
       return newString;
}

但是当我运行程序时,它什么也没有显示。请帮我修复代码。非常感谢!

4

7 回答 7

3

如果这不是作业,请使用 StringBuilder 类和 reverse() 方法。

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/StringBuilder.html#reverse ()

如果这是一个家庭作业,请自己做。

于 2012-07-08T08:48:21.390 回答
2

由于错误的控制条件,循环永远不会执行:

for (int i=0; i>backward.length(); i--)

它从大于开始0并一直持续到i大于length(这永远不会像length至少一样0)。你可能的意思是:

for (int i=backward.length(); i>=0; i--)

一旦你设法修复你的代码,考虑使用StringBuilder而不是连接到String. 一旦你设法使用StringBuilder,你会发现方便的reverse()方法:

return new StringBuilder(backward).reverse().toString();
于 2012-07-08T08:48:46.477 回答
1
class Test
{
    public static void main(String[] args)
    {
        String strtorev = "Test Code";
        String newString = "";
        int len = strtorev.length();
        System.out.println(len);
        for(int i =0;i<len;i++)
        {
            String subChar = strtorev.substring(strtorev.length()-1-i,strtorev.length()-i);
            newString += subChar;
            System.out.println(newString);
        }
    }
}
于 2013-09-09T03:51:39.380 回答
1

你的 for 循环搞砸了,它永远不会运行,因为你有错误的条件,将其更改为:

 for (int i=backward.length(); i>=0; i--)
于 2012-07-08T08:50:04.497 回答
0

你应该StringBuilder。以下代码应该可以按预期工作。

public static String ReverseStr(String backward)
{
   String newString = "";
   StringBuilder sb=new StringBuilder(backward);
   for (int i=0; i>backward.length(); i--) //backward.length() may be replaced with sb.length()
   {
      String subChar = sb.charAt(i); //Replace `substring()` with `charAt()`
      newString += subChar;
   }
   return newString;
}
于 2012-07-08T09:07:36.527 回答
0
public static String ReverseStr(String backward) {

       String newString = "";

       for (int i=backward.length()-1; i>=0; i--) 
          newString+ = backward.charAt(i);

       return newString;
}
于 2013-06-08T22:10:27.500 回答
0

我们可以使用递归来反转字符串

public class ReverseStringTest {
    public static String reverseString(String str) {
        if (str.isEmpty()) {
            return str;
        } 
        //Calling Function Recursively
        return reverseString(str.substring(1)) + str.charAt(0);
    }

    public static void main(String[] args) {
        System.out.println(reverseString("java"));
    }
}
于 2018-09-13T11:04:03.703 回答