首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获取整型数的独立位数?

如何获取整型数的独立位数?
EN

Stack Overflow用户
提问于 2010-08-02 23:35:16
回答 27查看 727.6K关注 0票数 176

我有像1100,1002,1022等的数字。我想要单独的数字,例如第一个数字1100,我想有1,1,0,0。

我怎样才能在Java中获得它?

EN

回答 27

Stack Overflow用户

发布于 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();
票数 79
EN

Stack Overflow用户

发布于 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[]{});
}
票数 33
EN

Stack Overflow用户

发布于 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
票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3389264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档