在Java中将int转换为数组char

时间:2013-10-08 01:20:10

标签: java

我正在尝试将整数转换为字符数组,而不使用字符串操作。

我的尝试是:

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

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

没有输出,应该给我:

'1'

'2'

我该如何解决这个问题?谢谢!

4 个答案:

答案 0 :(得分: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]

请注意,floor(log10(n) + 1)会返回n中的位数。此外,如果您想保留原始号码,请创建一个副本,然后在for - 循环中使用该号码。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

@ arshajii代码log10(n) + 1

+1对我来说也是新的东西。如果您打算使用Vectors而不是arrays,您也可以按照此过程(但Vector具有相反顺序的元素),您永远不需要计算其大小号码本身

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;
    }