2

我试图在不使用字符串操作的情况下将整数转换为字符数组。

我的尝试是:

int number = 12;
char[] test = Character.toChars(number);

for (char c : test)
    System.out.println(c);

没有输出,应该给我:

'1'

'2'

我怎样才能解决这个问题?谢谢!

4

4 回答 4

4

尝试这样的事情:

int number = 12345;

char[] arr = new char[(int) (Math.log10(number) + 1)];

for (int i = arr.length - 1; i >= 0; i--) {
    arr[i] = (char) ('0' + (number % 10));
    number /= 10;
}

System.out.println(Arrays.toString(arr));
[1、2、3、4、5]

请注意,返回 中的位数。此外,如果您想保留原始号码,请创建一个副本并在-loop 中使用它。floor(log10(n) + 1)nfor

另请注意,如果您还计划处理非正整数,则可能必须调整上面的代码。但是,总体思路应该保持不变。

于 2013-10-08T01:31:59.023 回答
1

char[] test = Integer.toString(number).toCharArray();

于 2013-10-08T01:27:11.863 回答
0

提取数字的每个数字,将其转换为字符(通过添加“0”)并将它们存储到 char 数组中。让我们知道您的尝试。

于 2013-10-08T01:25:58.500 回答
0

+1 for @arshajii's code log10(n) + 1 is something new for me as well. If you intend to use Vectors instead of arrays you can also follow this procedure(But the Vector has elements in reverse order) in which you never need to calculate the size of number itself

public static Vector<Character> convert(int i) {
        Vector<Character> temp = new Vector<Character>();
        while (i > 0) {
            Character tempi = (char) ('0' + i % 10);
            i = i / 10;
            temp.add(tempi);
        }
        return temp;
    }
于 2013-10-08T01:54:06.583 回答