所以如果像这样做的话,这可能很容易。
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;
感谢
答案 0 :(得分:4)
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)
您的代码中发生的事情是02141
与2141
不同;第一个是八进制(相当于1121
十进制),而第二个是2141
十进制。
Java语言规范的相关部分是JLS 3.10.1,特别是DecimalNumeral
和OctalNumeral
的语法产生。