使用递归返回字符串的反向?

时间:2016-11-02 21:28:04

标签: 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: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);
    }
}

2 个答案:

答案 0 :(得分:3)

异常堆栈跟踪告诉您null正在传递给concat()方法。 concat()的参数是您的reverseString()方法,当字符串为空时返回null。您可以返回空字符串以避免null,而不是返回NullPointerException。替换行:

return null;

return "";

答案 1 :(得分:2)

除了@Asaph所说的你还需要分配这个表达式   result.concat(reverseString(inString.substring(0,inString.length() - 1)));

到您的结果变量,使其变为:

result = result.concat(reverseString(inString.substring(0, inString.length()-1)));

否则它将无法工作,因为String类的concat方法不返回调用它的同一对象