3
3
/**
4
4
* Find the number of digits in a number.
5
5
*/
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 () {
26
8
}
27
-
28
9
/**
29
10
* Find the number of digits in a number.
30
11
*
31
12
* @param number number to find
32
13
* @return number of digits of given number
33
14
*/
34
- private static int numberOfDigits (int number ) {
15
+ public static int numberOfDigits (int number ) {
35
16
int digits = 0 ;
36
17
do {
37
18
digits ++;
@@ -46,7 +27,7 @@ private static int numberOfDigits(int number) {
46
27
* @param number number to find
47
28
* @return number of digits of given number
48
29
*/
49
- private static int numberOfDigitsFast (int number ) {
30
+ public static int numberOfDigitsFast (int number ) {
50
31
return number == 0 ? 1 : (int ) Math .floor (Math .log10 (Math .abs (number )) + 1 );
51
32
}
52
33
@@ -56,7 +37,7 @@ private static int numberOfDigitsFast(int number) {
56
37
* @param number number to find
57
38
* @return number of digits of given number
58
39
*/
59
- private static int numberOfDigitsFaster (int number ) {
40
+ public static int numberOfDigitsFaster (int number ) {
60
41
return number < 0 ? (-number + "" ).length () : (number + "" ).length ();
61
42
}
62
43
@@ -66,7 +47,7 @@ private static int numberOfDigitsFaster(int number) {
66
47
* @param number number to find
67
48
* @return number of digits of given number
68
49
*/
69
- private static int numberOfDigitsRecursion (int number ) {
50
+ public static int numberOfDigitsRecursion (int number ) {
70
51
return number / 10 == 0 ? 1 : 1 + numberOfDigitsRecursion (number / 10 );
71
52
}
72
53
}
0 commit comments