如何获得'0101'中位数的正确输出?

问题描述 投票:0回答:2

我得到以下代码的错误输出

public class Main {

    public static void main(String[] args) {
    int result=getDigitCount(0101);
        System.out.println(result);
    }
    public static int getDigitCount(int number){
        int count=1;
        if(number<0){
            return -1;
        }
        else{
            while(number>0){
                if(number/10!=0){
                    count++;
                }
                number=number/10;
            }
        }
        return count;
    }

[当数字为0101时。 而不是3位数字,它显示2位数字。 010等也是如此。如果有人能找出问题所在并予以纠正,我将不胜感激。

java digits
2个回答
1
投票

另一种不使用循环的方式。

public class Main {

    public static void main(String[] args) {
    int result=getDigitCount(0101);
        System.out.println(result);
    }
    public static int getDigitCount(int number){
        if (number < 0) 
            return -1;
        return (number == 0) ? 0 : (int)Math.log10(number) + 1;
    }
}

1
投票

首先,整数立即数0101中的前导零实际上并不存在,因此您无法对其进行计数。它只能以数字string存在,因此,如果您真的需要用这种方式对数字进行计数,请使用带String#length()的字符串。就是说,您的计数逻辑已关闭,只要运行数不为零,您就应该继续增加计数器。考虑此更新版本:

public static int getDigitCount(int number){
    int count=1;
    if (number < 0) {
        return -1;
    }
    else {
        while (number > 0) {
            count++;
            number /= 10;
        }
    }
    return count;
}
© www.soinside.com 2019 - 2024. All rights reserved.