如何使用递归方法(没有字符串)使用逗号除数打印int?

时间:2016-09-30 23:54:21

标签: java recursion int comma

在我的计算机科学课上,我们被分配了一个递归实验室,我们必须用逗号分隔3个数字组来打印一个数字。 这是直接来自赋值的文本(该方法必须是递归的):

  

编写一个名为printWithCommas的方法,该方法只需一个非负数   原始int参数并使用正确插入的逗号显示它。   不使用String。

     

例如printWithCommas(12045670);显示12,045,670

     

printWithCommas(1);显示1

我真的很难过。到目前为止,这是我的代码:

    public static void printWithCommas(int num) {
    //Find length
    if (num < 0) return;
    int length = 1;
    if (num != 0) {
        length = (int)(Math.log10(num)+1);
    }
    //Print out leading digits
    int numOfDigits = 1;
    if (length % 3 == 0) {
        numOfDigits = 3;
    }
    else if ((length+1) % 3 == 0) {
        numOfDigits = 2;
    }
    System.out.print(num / power(10,length-numOfDigits));
    //Print out comma
    if (length > 3) {
        System.out.print(',');
    }
    printWithCommas(num % power(10,length-numOfDigits));
}

它会出现堆栈溢出(我可以稍后修复),但它无法打印出一些零,特别是那些应该在每个逗号之后的零。

我觉得我采用完全错误的方法来接受这一点,但却无法想到一个好的方法。任何帮助将不胜感激。

提前致谢!

注意:power是我制作的计算能力的函数。第一个参数是基数,第二个是指数。

1 个答案:

答案 0 :(得分:0)

以下是我提出的代码,对于其他可能会遇到此问题的人来说:

public static void printWithCommas(int num) {
    if (num > 999) {
        printWithCommas(num/1000);
        System.out.print(',');
        if (num % 1000 < 100) System.out.print('0');
        if (num % 1000 < 10) System.out.print('0');
        System.out.print(num%1000);
    }
    else {
        System.out.print(num);
    }
}