我得到以下代码的错误输出:
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等也是如此。如果有人能找出问题所在并予以纠正,我将不胜感激。
另一种不使用循环的方式。
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;
}
}
首先,整数立即数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;
}