Java 程序:计算数字中的位数

编写一个 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);
	}
}
Java Program to Count Number of Digits in a Number using While Loop

在以下语句中,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)。