簡體   English   中英

如何在Java中獲取int的數字數組

[英]how to get an array of of the digits of an int in java

因此,如果這樣做,這可能會很容易

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;

謝謝

編輯:......我完全忘記了八進制文字。 這就解釋了為什么值顯示不同。 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;
}

您的代碼中發生的是021412141 第一個是八進制的(相當於1121十進制),而第二個是2141十進制。

Java語言規范的相關部分是JLS 3.10.1 ,特別是DecimalNumeralOctalNumeral的語法生成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM