在Java中,可以使用下面提到的方法找出给定整数中的位数。
方法1:使用迭代
该方法涉及以下步骤:
Input: MyNum
Step 1: Initialize the count = 0
Step 2: Iterate over MyNum while it is not zero.
Step 2a: Update MyNum by MuNum / 10
Step 2b: Increase count by 1
Step 3: Return count
示例:
Input: 564
count: 0
Iteration 1:
MyNum: 564 / 10 = 56
count: 0 + 1 = 1
Iteration 2:
MyNum: 56 / 10 = 5
count: 1 + 1 = 2
Iteration 3:
MyNum: 5 / 10 = 0
count: 2 + 1 = 3
return count = 3
下面的代码块显示了上述概念的实现:
public class MyClass {
//统计位数的方法
static int countDigits(long MyNum) {
int count = 0;
while(MyNum != 0){
MyNum = MyNum / 10;
count++;
}
return count;
}
public static void main(String[] args) {
long x = 123;
long y = 459709;
System.out.println(x + " contains: " + countDigits(x) + " digits");
System.out.println(y + " contains: " + countDigits(y) + " digits");
}
}
上面的代码将给出输出如下:
123 contains: 3 digits
459709 contains: 6 digits
方法2:使用递归
使用递归方法也可以实现上述结果。考虑下面的示例:
public class MyClass {
//统计位数的方法
static int countDigits(long MyNum) {
if(MyNum != 0)
return 1 + countDigits(MyNum/10);
else
return 0;
}
public static void main(String[] args) {
long x = 564;
long y = 980620;
System.out.println(x + " contains: " + countDigits(x) + " digits");
System.out.println(y + " contains: " + countDigits(y) + " digits");
}
}
上面的代码将给出以下输出:
564 contains: 3 digits
980620 contains: 6 digits
方法 3:使用日志方法
日志 (给定数字的绝对值(以 10 为底)可用于找出给定数字的位数。考虑下面的示例:
public class MyClass {
//统计位数的方法
static int countDigits(long MyNum) {
return (int)Math.log10(Math.abs(MyNum)) + 1;
}
public static void main(String[] args) {
long x = 564;
long y = -12345;
long z = 980620;
System.out.println(x + " contains: " + countDigits(x) + " digits");
System.out.println(y + " contains: " + countDigits(y) + " digits");
System.out.println(z + " contains: " + countDigits(z) + " digits");
}
}
上面的代码将给出以下输出:
564 contains: 3 digits
-12345 contains: 5 digits
980620 contains: 6 digits
方法 4:使用字符串长度
这可以也可以通过将数字的绝对值转换为字符串,然后找出字符串的长度来获得原始数字的位数。考虑下面的示例:
public class MyClass {
//统计位数的方法
static int countDigits(long MyNum) {
String MyStr = Long.toString(MyNum);
return MyStr.length();
}
public static void main(String[] args) {
long x = 564;
long y = -12345;
long z = 980620;
System.out.println(x + " contains: " + countDigits(x) + " digits");
System.out.println(y + " contains: " + countDigits(y) + " digits");
System.out.println(z + " contains: " + countDigits(z) + " digits");
}
}
上面的代码将给出以下输出:
564 contains: 3 digits
-12345 contains: 5 digits
980620 contains: 6 digits