如何在java中获取int的数字数组

时间:2011-02-27 07:54:55

标签: java arrays

所以如果像这样做的话,这可能很容易。

public static [] nums(int j)
{
    int num = 12345;
    int[]thenums = [5];

    for(int i=0; i<5; i++)
    {
       thenums[4-i] = num%10;
       num = num/10;
    }

return the nums
}

我得到{1,2,3,4,5}

但由于某种原因,如果数字以0开头,那么它不起作用 如果数字是

,如何使这项工作
int num = 02141;

感谢

2 个答案:

答案 0 :(得分:4)

编辑:Doh ......我完全忘记了八进制文字。这就解释了为什么价值出现的不同。 (02141被视为八进制文字;它与2141的值不同。)

然而,听起来OP想要“记住”数字中前导零的数量。没有办法将其作为整数,因为它只是记住一个值。看到“3”鸟和看到“0000003”鸟类有什么区别?

如果你有一个数字表示,其中前导零是重要的,你不只是在谈论一个整数,这是int所代表的全部数量。

您从哪里获得输入?听起来你应该从一开始就将它维护成一个字符串。

如果总是想要5个数字,这很容易做 - 而且你当前的代码应该这样做(当修改为实际编译时) - 这样的事情:

public class Test
{
    public static void main(String[] args) 
    {
        int[] digits = getDigits(123);
        for (int digit : digits)
        {
            System.out.print(digit); // Prints 00123
        }
    }

    public static int[] getDigits(int value)
    {
        int[] ret = new int[5];
        for (int i = 4; i >=0 ; i--)
        {
            ret[i] = value % 10;
            value = value / 10;
        }
        return ret;
    }
}

现在硬编码返回5位数。如果您在编译时不知道位数,但在执行时知道它,您可以将其传递给方法:

public static int[] getDigits(int value, int size)
{
    int[] ret = new int[size];
    for (int i = size - 1; i >=0 ; i--)
    {
        ret[i] = value % 10;
        value = value / 10;
    }
    // Perhaps throw an exception here if value is not 0? That would indicate
    // we haven't captured the complete number

    return ret;
}

答案 1 :(得分:3)

您的代码中发生的事情是021412141不同;第一个是八进制(相当于1121十进制),而第二个是2141十进制。

Java语言规范的相关部分是JLS 3.10.1,特别是DecimalNumeralOctalNumeral的语法产生。