Java 有没有更好(更快)的方法将数字除以数字?

Java 有没有更好(更快)的方法将数字除以数字?,java,Java,我写道: void blah(int num) { int numOfDigits = Math.log10(num); int arr[] = new int[numOfDigits + 1]; for(int i = numOfDigits; i>0; i--) { arr[i] = num%10; num = num/10; } } 但我想一定有更优雅的方式来做这件事。有吗?如果您对字符串感到满意,可以这样做:

我写道:

void blah(int num)
{
    int numOfDigits = Math.log10(num);
    int arr[] = new int[numOfDigits + 1];
    for(int i = numOfDigits; i>0; i--)
    {
        arr[i] = num%10;
        num = num/10;
    }
}

但我想一定有更优雅的方式来做这件事。有吗?

如果您对字符串感到满意,可以这样做:

String[] arr = Integer.toString(num).split("(?<=\\d)");

考虑使用
integer.toString
将整数转换为字符串,然后使用
string.tocharray()
将其转换回。这可能更“优雅”,也可能不更“优雅”,这取决于你的世界观。

这可能是一种方式(我并不为此感到骄傲:)

整数=1234567890;//输入号码
字符串temp=number.toString();//转换为字符串
int[]输出=新的int[temp.length()];
对于(int i=0;i
此方法不起作用-它有缺陷。您需要从i=numf数字-1开始;@EugeneRetunsky的可能副本:抱歉,这是一个打字错误。它仍然有问题。您需要分配
intarr[]=newint[numofidigts+1]。(如果
num<10
numfodigits
将为0。)看起来很好。除非你在谈论编码时间,否则你不会更快……你不能转换不同类型的数组:(是的,我就是这么想的。你能详细说明一下
转换回
部分吗?对不起,术语分解。@noMAD,请看波希米亚人关于转换回
int[]的答案
,虽然我不相信这是一个比您最初的答案更好的解决方案。
Integer.toString
将在内部执行非常类似的操作!分隔符是否基于正则表达式??是-split()使用正则表达式进行拆分。
(?这真的比问题用作示例的循环方法快吗(bug除外)?@YoussefG。不是更快,而是“更优雅”,因为代码更少,并且使用API。速度通常意味着丑陋的代码。不一定。库方法的优化程度通常比您想象的要高。
int[] arrint = new int[arr.length];
for (int i = 0; i < arr.length; i++)
     arrint[i] = Integer.parseInt(arr[i]);
Integer number = 1234567890;               // input number
String temp = number.toString();           // convert to string
int [] output = new int[temp.length()];

for (int i=0 ; i< temp.length(); i++)     // get character at index i from string
    output[i] = temp.charAt(i) - '0';      // convert it to number by removing '0'