我这里有一个向后显示字符串的方法。
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;
}
但是当我运行该程序时,它什么也没显示。请帮我修复代码。非常感谢你!
答案 0 :(得分:3)
如果这不是作业,那么使用StringBuilder类和reverse()方法。
http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/StringBuilder.html#reverse()
如果这是家庭作业,请自己动手。
答案 1 :(得分: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();
答案 2 :(得分:1)
你的for循环搞砸了,因为你的条件错误所以它永远不会运行,把它改成:
for (int i=backward.length(); i>=0; i--)
答案 3 :(得分: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);
}
}
}
答案 4 :(得分: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;
}
答案 5 :(得分:0)
public static String ReverseStr(String backward) {
String newString = "";
for (int i=backward.length()-1; i>=0; i--)
newString+ = backward.charAt(i);
return newString;
}