Java 使用递归返回字符串的倒数?
我试图使用递归返回字符串的倒数,但出现了一些错误。我不熟悉递归,所以我真的不知道从哪里开始。我得到的错误是:Java 使用递归返回字符串的倒数?,java,recursion,Java,Recursion,我试图使用递归返回字符串的倒数,但出现了一些错误。我不熟悉递归,所以我真的不知道从哪里开始。我得到的错误是: Exception in thread "main" java.lang.NullPointerException at java.lang.String.concat(String.java:2027) at Recursion.reverseString(Recursion.java:30) at Recursion.reverseString(Recursion.java:
Exception in thread "main" java.lang.NullPointerException
at java.lang.String.concat(String.java:2027)
at Recursion.reverseString(Recursion.java:30)
at Recursion.reverseString(Recursion.java:30)
at Recursion.reverseString(Recursion.java:30)
at Recursion.reverseString(Recursion.java:30)
at Recursion.reverseString(Recursion.java:30)
at Recursion.main(Recursion.java:46)
这是我的密码:
public static String reverseString (String inString) {
String result = "";
if (inString.length() > 0) {
// if the string is empty
result = inString.charAt(inString.length()-1) + "";
result.concat(reverseString(inString.substring(0, inString.length()-1)));
return result;
} else {
return null;
}
}
// the testers
public static void main(String[] args){
String inString = "abcde";
// test the reverseString
String revString = reverseString(inString);
System.out.println(revString);
}
}
异常stacktrace告诉您,
null
正在传递给concat()
方法。concat()
的参数是reverseString()
方法,该方法在字符串为空时返回null
。您可以返回空字符串以避免出现NullPointerException
,而不是返回null
。更换线路:
return null;
与
异常stacktrace告诉您,
null
正在传递给concat()
方法。concat()
的参数是reverseString()
方法,该方法在字符串为空时返回null
。您可以返回空字符串以避免出现NullPointerException
,而不是返回null
。更换线路:
return null;
与
除了@asah所说的之外,您还需要指定此表达式 result.concat(反向限制(inString.substring(0,inString.length()-1))强> 添加到结果变量,使其成为:
result = result.concat(reverseString(inString.substring(0, inString.length()-1)));
否则它将不起作用,因为String类的concat方法不会返回调用它的同一个对象。除了@asah所说的之外,您还需要分配这个表达式 result.concat(反向限制(inString.substring(0,inString.length()-1))强> 添加到结果变量,使其成为:
result = result.concat(reverseString(inString.substring(0, inString.length()-1)));
否则它将无法工作,因为String类的concat方法不会返回调用它的对象。
result。concat(null)
抛出NPE。那么,reverseString(…)
是否会返回null?如果字符串为空,则为空。所以你需要返回一些不同的东西。空的非空字符串的反方向是什么?reverseString()
中的returnnull
似乎是将null
引用引入递归的一个很好的选择。我看不出它在任何情况下都有什么意义。result.concat(null)
抛出NPE。那么,reverseString(…)
是否会返回null?如果字符串为空,则为空。所以你需要返回一些不同的东西。空的非空字符串的反方向是什么?reverseString()
中的returnnull
似乎是将null
引用引入递归的一个很好的选择。我不明白这在任何情况下都有什么意义。谢谢@不客气。如果我的答案对您有帮助,请单击答案左侧的复选标记,将其标记为正确。谢谢@不客气。如果我的答案对你有帮助,请点击答案左边的复选标记,将其标记为正确。答对了。我错过了那个+1@Asaph谢谢:)接得好。我错过了那个+1@Asaph谢谢:)