不将int转换为字符串,将其转换为数组

4

我正在使用Java编程,想将一个整数转换成数组。例如,我想将122转换为{1, 2, 2}。你有什么想法吗?谢谢提前。我不允许将它转换为字符串。


1
@udiboy1209 不行。无法使用字符串。 - Luca Reccia
3个回答

3
以下示例使用纯算术方法(不将数字转换为字符串):
int number = 122;
List<Integer> digitList = new LinkedList<>();

while(number > 0) {
  int d = number % 10; //get last digit
  digitList.add(0, d);
  number = number / 10; //omit last digit
}

Integer[] digits = digitList.toArray(new Integer[0]);
System.out.println(Arrays.toString(digits));

谢谢,但我不允许使用数学函数 - 我该如何在没有它的情况下完成? - Z.Wo
重构for循环为递归函数,如果您的十进制索引大于您的数字,则跳过。 - IEE1394
由于您无法使用数学,因此应找到一种获取值的数字位数的方法。您可以实现自己的log10或执行类似以下代码的操作:'length=0;i=value;while(i:10>0.9){i=i/10;length++;}' - Luca Reccia
@Z.Wo 我更新了代码,不再使用 Math 和数字的长度。 - elyor

3

这是不使用Math类的答案。

import java.util.Arrays;
class int_to_array
{
    public static void main(String arg[])
    {
        int number = 122;
        int length=0;
        int org=number;
        while(org!=0)
        {
            org=org/10;
            length++;
        }
        int[] array = new int[length];

        for(int i = 0; i < length; i++) {
          int rem = number % 10; 
          array[length - i - 1] = rem;
          number = number / 10; 
        }

        System.out.println(Arrays.toString(array));
    }
}

非常感谢!我会直接实现你的想法并进行测试。 - Z.Wo
当我实现这个时,它似乎陷入了无限循环: - Z.Wo

1
这会导致无限循环 - 为什么?
    int input = readInt("Bitte geben Sie eine positive Zahl ein:");
    while(input < 0) {
        input = readInt("Bitte geben Sie eine positive Zahl ein:");
    }
    int number = input;
    int length = 0;
    int org = number;
    while(org != 0) {
        org = org / 10;
        length++;
    }
    int[] inputArray = new int[length];
    int i = 0;
    while(i < inputArray.length) {
        int rem = number % 10;
        inputArray[length - i - 1] = rem;
        number = number / 10;
 i++;
    }
    String output = "{";
    i = 0;
    while(i < inputArray.length) {
        output += inputArray[i];
        if(i < inputArray.length-1) {
            output += ", ";
        }
        i++;
    }
    output += "}";
    System.out.print(output);

我已经编辑了你的代码,请现在检查它。 - Arpit Agarwal
1
这太完美了!!!非常棒。非常感谢你!!! - Z.Wo
请将该答案标记为已接受。 - Arpit Agarwal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接