如何以递归方式向后打印代码?

时间:2016-11-04 18:31:07

标签: java string recursion

这是我的代码。 我试图让String输入向后打印出来,但是每次运行时代码都没有打印出来,因为它被调用以反向打印。

mvc.perform(get(PORT_SCAN_URL)
   .param("address", "192.168.1.100")
   .param("port", "53"))
   .andExpect(status().isBadRequest())
   .andExpect(jsonPath("$.response").exists())
   .andExpect(jsonPath("$.response.code", is(400)))
   .andExpect(jsonPath("$.response.errors[0].message", is("Site local IP is not supported")));

4 个答案:

答案 0 :(得分:3)

printBackwards实际上只返回{​​{1}},但没有做任何其他事情。要打印返回的String,您可以将其传递给String方法。

println

或者,您可以public static void main(String[] args) { String msg; Scanner scan = new Scanner(System.in); System.out.print("Enter a string: "); msg = scan.nextLine(); System.out.print("\nThe string backwards: "); String reversed = printBackwards(msg); System.out.println(reversed); } 打印printBackwards并保留主要方法:

String

答案 1 :(得分:2)

嗯,你忘了打印字母

public static void printBackwards(String s)
{
    if (s.length() == 0) return ;
    printBackwards(s.substring(1));
    System.out.print(s.charAt(0));
}

DEMO

答案 2 :(得分:0)

迭代:

static String printBackwards(String s) {
   StringBuilder sb = new StringBuilder();
   for(int i = s.length() - 1; i >= 0; --i)
     sb.append(s.charAt(i));
   return sb.toString();
 }

递归:

static String printBackwards(String s) {
   if(s.length() == 0)
     return "";
   return s.charAt(s.length() - 1) + reverseMe(s.substring(0,s.length()-1));
 }

答案 3 :(得分:0)

您的代码调用printBackwards,但会立即丢弃输出。

尝试将main()的第6行更改为System.out.print(printBackwards(msg));

鉴于此,我还考虑将方法名称更改为reverseString(String)