我正在尝试将整数转换为字符数组,而不使用字符串操作。
我的尝试是:
int number = 12;
char[] test = Character.toChars(number);
for (char c : test)
System.out.println(c);
没有输出,应该给我:
'1'
'2'
我该如何解决这个问题?谢谢!
答案 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)
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;
}