w3resource

Kotlin Class: MathUtils class with static functions


Write a Kotlin program that creates a class 'MathUtils' with static functions to calculate the factorial, square root, and cube root of a number.


Pre-Knowledge (Before You Start!)

Before attempting this exercise, you should be familiar with the following concepts:

  • Companion Objects: In Kotlin, companion objects allow defining functions that behave like static methods in Java.
  • Factorial Calculation: The factorial of a number (n!) is calculated as the product of all positive integers from 1 to n.
  • Math Functions: Using built-in functions like Math.sqrt() and Math.cbrt() to calculate the square root and cube root of a number.
  • Loops in Kotlin: The for loop is used to compute the factorial by multiplying numbers in a range.
  • Function Calls: Understanding how to call functions within the main() function and pass arguments.

Hints (Try Before Looking at the Solution!)

Try to solve the problem using these hints:

  • Hint 1: Define a class named MathUtils and use a companion object to create a static function for factorial calculation.
  • Hint 2: Implement a loop inside the factorial() function to compute the factorial of a given integer.
  • Hint 3: Define separate functions for square root and cube root calculations using built-in math functions.
  • Hint 4: In the main() function, create a variable for the input number and call the three functions to compute and print their results.

Sample Solution:

Kotlin Code:

class MathUtils {
    companion object {
        fun factorial(n: Int): Long {
            if (n == 0 || n == 1) {
                return 1
            }
            var result = 1L
            for (i in 2..n) {
                result *= i
            }
            return result
        }
    }
}

fun sqrt(n: Double): Double {
    return Math.sqrt(n)
}

fun cbrt(n: Double): Double {
    return Math.cbrt(n)
}

fun main() {
    val number = 7

    val factorial = MathUtils.factorial(number)
    println("Factorial of $number is: $factorial")

    val squareRoot = sqrt(number.toDouble())
    println("Square root of $number is: $squareRoot")

    val cubeRoot = cbrt(number.toDouble())
    println("Cube root of $number is: $cubeRoot")
}

Sample Output:

Factorial of 7 is: 5040
Square root of 7 is: 2.6457513110645907
Cube root of 7 is: 1.9129311827723892

Explanation:

In the above exercise -

  • First we define a class "MathUtils" and declare a "companion" object inside it. The companion object contains static functions. Inside the companion object, we define a function "factorial()" to calculate the factorial of a number using an iterative approach.
  • We also define top-level functions "sqrt()" and "cbrt()" outside the "MathUtils" class. These functions use the Math.sqrt and Math.cbrt functions from the standard library to calculate the square root and cube root of a number, respectively.
  • In the "main()" function, we calculate the factorial of a number using the MathUtils.factorial function. We also calculate the square root and cube root using the sqrt and cbrt top-level functions, respectively.

Go to:


PREV : Create Customer class and send welcome email.
NEXT : Shape, circle, and rectangle classes with area calculation.

Kotlin Editor:


Improve this sample solution and post your code through Disqus

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.