编写一个 Java 程序,使用 For 循环、While 循环、函数和递归来计算数字中的位数。要计算位数,我们必须将数字分解为单独的项。
Java 程序:使用 While 循环计算数字中的位数
此程序允许用户输入任何正整数,然后它将使用 While 循环将给定的数字分解为单独的数字并计算它们。
package SimplerPrograms;
import java.util.Scanner;
public class NumberofDigitsUsingWhile {
private static Scanner sc;
public static void main(String[] args) {
int Number, Count=0;
sc = new Scanner(System.in);
System.out.println("\n Please Enter any Number: ");
Number = sc.nextInt();
while(Number > 0) {
Number = Number / 10;
Count = Count + 1;
}
System.out.format("\n Number of Digits in a Given Number = %d", Count);
}
}

在以下语句中,System.out.println 语句将打印双引号内的语句。接下来,我们将用户输入的值赋给一个整数变量(Number)。
System.out.println("\n Please Enter any Number: ");
Number = sc.nextInt();
下一行,我们使用了 While 循环,While 循环中的条件将确保给定的数字大于 0(表示正整数)。
while(Number > 0) {
Number = Number / 10;
Count = Count + 1;
}
在此 Java 程序计算数字位数的示例中,用户输入的值为:Number = 1465,我们初始化 Count = 0。
第一次迭代
Number = Number / 10 = 1465 / 10
Number = 146
Count = Count + 1 = 0 + 1
Count = 1
第二次迭代:在第一次迭代中,Number = 146,Count = 1。
Number = 146 / 10 = 14
Count = 1 + 1 = 2
第三次迭代:在第二次迭代中,Number 和 Count 的值变为 Number = 14,Count = 2。
Number = 14 / 10 = 1
Count = 2 + 1 = 3
第四次迭代:在第三次迭代中,Number 和 Count 的值变为 Number = 1,Count = 3。
Number = 1 / 10 = 0
Count = 3 + 1 = 4
此处,Number = 0。因此,Java while 循环中存在的条件将失败。
最后一个 System.out.format 语句打印该数字中的位数。
System.out.format("\n Number of Digits in a Given Number = %d", Count);
给定变量 1465 的输出为 4。
Java 程序:使用 For 循环计算数字中的位数
这个 Java 程序允许用户输入任何正整数。然后,程序将给定的数字分解为单独的数字,并使用 For 循环计算这些单独的数字。
package SimplerPrograms;
import java.util.Scanner;
public class NumberofDigitsUsingFor {
private static Scanner sc;
public static void main(String[] args) {
int Number, Count=0;
sc = new Scanner(System.in);
System.out.println("\n Please Enter any Number: ");
Number = sc.nextInt();
for (Count = 0; Number > 0; Number = Number/10) {
Count = Count + 1;
}
System.out.format("\n Total = %d", Count);
}
}
我们只是将上面示例中的 While 循环替换为 For 循环。使用 for 循环计算数字总位数的输出。
Please Enter any Number:
123456789
Total = 9
Java 程序:使用函数计算数字中的位数
在此 程序中,我们使用了与第二个示例相同的步骤,但我们将逻辑分离并将其放置在一个单独的方法中。
package SimplerPrograms;
import java.util.Scanner;
public class NumberofDigitsUsingFunctions {
private static Scanner sc;
private static int Count = 0;
public static void main(String[] args) {
int Number;
sc = new Scanner(System.in);
System.out.println("\n Please Enter any Number: ");
Number = sc.nextInt();
Count = NumberofDigits(Number);
System.out.format("\n Total = %d", Count);
}
public static int NumberofDigits(int Number) {
for (Count = 0; Number > 0; Number = Number/10) {
Count = Count + 1;
}
return Count;
}
}
Please Enter any Number:
904060
Total = 6
如果您观察下面的语句,我们调用 NumberOfDigits (Number) 方法并将返回值赋给整数变量 Count。
Count = NumberofDigits(Number);
当编译器在 main() 程序中遇到 NumberOfDigits (Number) 行时,Javac 会立即跳转到下面的函数。
public static int NumberofDigits(int Number) {
Java 程序:使用递归计算数字中的位数
此程序允许用户输入任何正整数,然后使用递归概念将给定的数字分解为单独的数字并计算它们。
在此 Java 程序示例中,我们使用 OOPS 将代码进行拆分。为此,首先,我们将创建一个类,该类包含一个以递归方式计算数字位数的函数。
package SimplerPrograms;
public class NumberofDigits {
int Count = 0;
public int DigitsCount(int Number) {
if(Number > 0) {
Count = Count + 1;
DigitsCount(Number / 10);
}
return Count;
}
}
在 Main Program 中,我们将创建上述类的实例并调用方法。
package SimplerPrograms;
import java.util.Scanner;
public class NumberofDigitsUsingRecursion {
private static Scanner sc;
public static void main(String[] args) {
int Number, Count=0;
sc = new Scanner(System.in);
System.out.println("\n Please Enter any Number: ");
Number = sc.nextInt();
NumberofDigits nd = new NumberofDigits();
Count = nd.DigitsCount(Number);
System.out.format("\n Total = %d", Count);
}
}
Please Enter any Number:
9876321
Total = 7
NumberOfDigits 类分析
在此 Java 程序计算数字位数中,我们声明了一个带有单个参数的整数函数 DigitsCount。我们在函数中使用 If 语句来检查给定的数字是否大于零。如果为真,则执行 If 块内的语句。这意味着:
- 计数将使用 Count = Count + 1 递增 1。
- DigitsCount (Number / 10) 语句使用更新后的值递归调用函数。如果您错过此行,编译器将在完成第一行后终止。
提示:如果您使用 void 关键字声明方法,我们无法返回值。如果您想返回值,请将 void 替换为数据类型并添加 return 关键字。
Main 类分析
首先,我们创建了 NumberOfDigits 类的实例或对象。
NumberofDigits nd = new NumberofDigits();
接下来,调用 DigitsCount 方法。
Count = nd.DigitsCount(Number);
最后,使用 System.out.println 语句打印输出(987654321 = 9)。