33/**
44 * Find the number of digits in a number.
55 */
6- public class NumberOfDigits {
7-
8- public static void main (String [] args ) {
9- int [] numbers = {
10- 0 ,
11- 12 ,
12- 123 ,
13- 1234 ,
14- -12345 ,
15- 123456 ,
16- 1234567 ,
17- 12345678 ,
18- 123456789 ,
19- };
20- for (int i = 0 ; i < numbers .length ; ++i ) {
21- assert numberOfDigits (numbers [i ]) == i + 1 ;
22- assert numberOfDigitsFast (numbers [i ]) == i + 1 ;
23- assert numberOfDigitsFaster (numbers [i ]) == i + 1 ;
24- assert numberOfDigitsRecursion (numbers [i ]) == i + 1 ;
25- }
6+ public final class NumberOfDigits {
7+ private NumberOfDigits () {
268 }
27-
289 /**
2910 * Find the number of digits in a number.
3011 *
3112 * @param number number to find
3213 * @return number of digits of given number
3314 */
34- private static int numberOfDigits (int number ) {
15+ public static int numberOfDigits (int number ) {
3516 int digits = 0 ;
3617 do {
3718 digits ++;
@@ -46,7 +27,7 @@ private static int numberOfDigits(int number) {
4627 * @param number number to find
4728 * @return number of digits of given number
4829 */
49- private static int numberOfDigitsFast (int number ) {
30+ public static int numberOfDigitsFast (int number ) {
5031 return number == 0 ? 1 : (int ) Math .floor (Math .log10 (Math .abs (number )) + 1 );
5132 }
5233
@@ -56,7 +37,7 @@ private static int numberOfDigitsFast(int number) {
5637 * @param number number to find
5738 * @return number of digits of given number
5839 */
59- private static int numberOfDigitsFaster (int number ) {
40+ public static int numberOfDigitsFaster (int number ) {
6041 return number < 0 ? (-number + "" ).length () : (number + "" ).length ();
6142 }
6243
@@ -66,7 +47,7 @@ private static int numberOfDigitsFaster(int number) {
6647 * @param number number to find
6748 * @return number of digits of given number
6849 */
69- private static int numberOfDigitsRecursion (int number ) {
50+ public static int numberOfDigitsRecursion (int number ) {
7051 return number / 10 == 0 ? 1 : 1 + numberOfDigitsRecursion (number / 10 );
7152 }
7253}
0 commit comments