如何将整数转换为数字列表[请阅读页面中的详细信息]

How to convert integer to a list of digital [please read detail in page]

我最好用一个例子来表达这一点,我正在尝试编写一个程序,假设我有一个这样的函数:

static List<Integer> int2List(int l, int base)

输入输出应该是

l=0, base=3, return {1}
l=1, base=3, return {2}
l=2, base=3, return {3}
l=3, base=3, return {1,1}
l=4, base=3, return {1,2}
l=5, base=3, return {1,3}
l=6, base=3, return {2,1}
l=7, base=3, return {2,2}
l=8, base=3, return {2,3}
l=9, base=3, return {3,1}
l=10, base=3, return {3,2}
l=11, base=3, return {3,3}
l=12, base=3, return {1,1,1}
l=13, base=3, return {1,1,2}
l=14, base=3, return {1,1,3}

... 这很像递归 mod 但有一些条件我想不通。

谢谢

感谢大家的意见,我已经更新了问题内容和方法签名,我想显示一个列表的内容,但忘记在元素之间添加逗号。

这是我的代码,它还不正确,但我想你可以从中得到一些意义。它也很像 Long.toString(int i, int radix),不同之处在于首先我需要添加那些前导零,其次我需要对列表中的每个元素做一个“+1”,但是做那也不给我正确的...

    static List<Integer> int2List(int l, int base) {
//        String s = Long.toString(l,base);
        List<Integer> list = new ArrayList<Integer>();

        int k = l % base;
        int j = l / base;
        int m = 0;
        list.add((int) (k + 1));
        while (j > base) {
            k = j % base;
            list.add((int) (k));
            if (j == base)
                break;
            j = j / base;
        }
        if (j == base) {
            list.add((int) (j));
        } else {
            if (j > 0) {
                list.add((int) (j));
            }
        }
        Collections.reverse(list);
        return list;
    }

我知道我在第一个版本中犯的错误,我现在修正我的错误并更新问题更具体,你能删除 "not worth reading" 吗,我真的欣赏..

===================

嗯,该方法应该是在循环中使用,这样它会输出范围[1,base]内的数字组成的所有可能的序列,而l可以看作是一个索引.

我认为你的方法签名是错误的。该函数似乎将数值转换为它的基本表示形式。

这意味着 return 值必须包含字符串。

你为什么要使用 List<...> 我不清楚。

这个怎么样?

static List<Integer> int2List(int l, int base)
{
    List<Integer> list = new ArrayList<Integer>();
    int n;
    l++;
    while(l > 0)
    {
       n = (l-1) % base;
       list.add(0, (int) n+1);
       l = (l-n)/base; 
    }
    return list;
}