我有像1100,1002,1022等的数字。我想要单独的数字,例如第一个数字1100,我想有1,1,0,0。
我怎样才能在Java中获得它?
发布于 2010-08-02 23:37:21
将其转换为String
并使用String#toCharArray()
或String#split()
。
String number = String.valueOf(someInt);
char[] digits1 = number.toCharArray();
// or:
String[] digits2 = number.split("(?<=.)");
如果您已经在使用Java8,然后碰巧想要对其执行一些聚合操作,请考虑使用String#chars()
从它中提取一个IntStream
。
IntStream chars = number.chars();
发布于 2010-08-03 01:32:19
这个怎么样?
public static void printDigits(int num) {
if(num / 10 > 0) {
printDigits(num / 10);
}
System.out.printf("%d ", num % 10);
}
或者,我们可以将其收集到一个整数数组中,然后打印该数组,而不是打印到控制台:
public static void main(String[] args) {
Integer[] digits = getDigits(12345);
System.out.println(Arrays.toString(digits));
}
public static Integer[] getDigits(int num) {
List<Integer> digits = new ArrayList<Integer>();
collectDigits(num, digits);
return digits.toArray(new Integer[]{});
}
private static void collectDigits(int num, List<Integer> digits) {
if(num / 10 > 0) {
collectDigits(num / 10, digits);
}
digits.add(num % 10);
}
如果您希望保持数字的顺序,从最低有效位(索引)到最高有效位(索引n),则需要使用以下更新后的getDigits():
/**
* split an integer into its individual digits
* NOTE: digits order is maintained - i.e. Least significant digit is at index[0]
* @param num positive integer
* @return array of digits
*/
public static Integer[] getDigits(int num) {
if (num < 0) { return new Integer[0]; }
List<Integer> digits = new ArrayList<Integer>();
collectDigits(num, digits);
Collections.reverse(digits);
return digits.toArray(new Integer[]{});
}
发布于 2013-04-09 05:20:43
我还没有见过任何人使用这种方法,但它对我来说很有效,而且很简短:
int num = 5542;
String number = String.valueOf(num);
for(int i = 0; i < number.length(); i++) {
int j = Character.digit(number.charAt(i), 10);
System.out.println("digit: " + j);
}
这将输出:
digit: 5
digit: 5
digit: 4
digit: 2
https://stackoverflow.com/questions/3389264
复制相似问题