微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

打印数字中的特定数字出现多少次

如何解决打印数字中的特定数字出现多少次

返回类型为void,只有一个输入参数,我试图使用while循环来打印出输入整数中多少个特定数字。

例如int i = 32001;那么我也想知道int中有多少个0,而输出将是2,因为该int中只有两个0。

以下我的代码出于某种原因仅输出0,但我不知道为什么。有人可以解决或帮助吗?

请不要使用任何适合您的电动工具或某些方法,而可以使用for循环或while循环。

public class loopPrr
{

public void howMany0(int i){
        
        
        int n = 0;
        int howmany = 0;
        char z = '0';
         while(i <= 0){
             ++i;
            if(i == z){
                howmany++;  
            }
        }
       
         System.out.println(howmany);
    }


public static void main(String args[]){
        
        loopPrr n = new loopPrr();
    
        
        n.howMany0(32001);
        
        
    
    
    }





}



解决方法

尝试下一个代码。逻辑很简单,执行mod 10以获得最右边的数字,将其计数为目标,将其除以10以除去最后一位,然后重复。

public void countNumber(int n,final int target) {

    int count = 0;

    if (n == target) {
        count = 1;
    }
    else {
        while (n != 0) {
            if (n % 10 == target)
                count++;

            n /= 10;
        }
    }

    System.out.println(count);
}
,

或者,您可以将数字分成一个字符数组,并查看有多少个零:

public void howMany0(int i) {
    if (i == 0) return 1;
    String str = String.valueOf(i);
    char[] digits = str.toCharArray();
    int howmany = 0;
    char z = '0';
    for (char c : digits) {
        if (c == z) {
            howmany++;
        }
    }
    return howmany;
}
,

获得所有数字的频率计数的一种简单方法如下:

int[] freq = new int[10];
int numb = 2829921;
while (numb > 0) {
    // use the digit as the index and bump the count
    freq[numb % 10]++;
    numb /= 10;
}
for (int i = 0; i < 10; i++) {
    // skip empty slots
    if (freq[i] > 0) {
        int k = freq[i];
        System.out
                .println(k + " " + i + ((k > 1) ? "'s" : ""));
    }
}

打印

1 1
3 2's
1 8
2 9's

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。