坚持使用Java的递归方法?

坚持使用Java的递归方法?,java,recursion,methods,Java,Recursion,Methods,我试图创建一个方法,将整数值转换为字符串。这是我的密码: public static void num(int n) { String[] numbers = {"one", "two", "three", "four", "five" , "six", "seven", "eight", "nine"}; if(n==0) System.out.println(numbers[n]); else { String n

我试图创建一个方法,将整数值转换为字符串。这是我的密码:

    public static void num(int n)
     {  String[] numbers = {"one", "two", "three", "four", "five" , "six", "seven", "eight", "nine"};
    if(n==0)
         System.out.println(numbers[n]);
    else
    {
        String numStr = Integer.toString(n);
    }
我不知道在此之后如何继续重新调用该方法。
一个示例运行是1234,然后将转换为一二三四。

注意,您没有包括零,我不明白您为什么这样做:
String numStr=Integer.toString(n)

您试图做的是:

public static void num(int n){
    String[] numbers = {"zero","one", "two", "three", "four", "five" , "six", "seven", "eight", "nine"};
    if(n<10){
         System.out.println(numbers[n]);
         return;
    }
    else{
         num(n/10);
         System.out.println(numbers[n%10]);
    }

}

正如Martín Muñoz del Río指出的那样,无法将整数转换为字符串,因为这只会创建一个数字字符串(即1234变为“1234”)。if语句检查整数是否等于0也无济于事,因为这不会处理其他单位数整数。如果n等于3或8,程序将直接进入下一步

在数组中存储每个数字的字符串表示形式是一个很好的第一步,但是您还需要创建一个字符串来存储原始整数的完整字符串表示形式。我已经创建并初始化了字符串digitString

    public static void num (int n) {

            String[] numbers = {"zero", "one", "two", "three", "four",      "five", "six", "seven", "eight", "nine"};

            String digitString = "";
您最初的if语句的想法是正确的,但它只检查一位数的整数是否为零。要解决此问题,请调整if语句以检查n是否小于10。由于递归方法将需要删除它已经计算过的数字,因此这种调整也将确保程序知道当只剩下一个数字时该做什么

    public static void num (int n) {

            String[] numbers = {"zero", "one", "two", "three", "four",      "five", "six", "seven", "eight", "nine"};

            String digitString = "";

            if (n < 10) {
                digitString += numbers[n] + " ";
            } else {
                int digit = n%10;
                digitString = numbers[digit] + " " + digitString;
                num(n/10);
            }

            System.out.print(digitString);
    }

希望这是有帮助的

如果打印错误,您的
。如果为0,则打印0而不是1。
    public static void num (int n) {

            String[] numbers = {"zero", "one", "two", "three", "four",      "five", "six", "seven", "eight", "nine"};

            String digitString = "";

            if (n < 10) {
                digitString += numbers[n] + " ";
            } else {
                int digit = n%10;
                digitString = numbers[digit] + " " + digitString;
                num(n/10);
            }

            System.out.print(digitString);
    }
    public static void main(String[] args) {
            num(3456);
    }