![](/img/trans.png)
[英]How to get the digits of an integer and store it into an array? [Java]
[英]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;
}
您的代碼中發生的是02141
與2141
; 第一個是八進制的(相當於1121
十進制),而第二個是2141
十進制。
Java語言規范的相關部分是JLS 3.10.1 ,特別是DecimalNumeral
和OctalNumeral
的語法生成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.