+ 1

Can anyone help me refactor this code?

This code passed the test cases but I think the control flow can be refactored. Any idea? fun main(args: Array<String>) { var hours = readLine()!!.toInt() var total: Double = 0.0 if(hours < 24){ if(hours <= 5){ //first 5 hours is $1/hour total += (hours * 1) } else { total += 5 //remaining hours is $0.5/hour var rhours = hours - 5 total += (rhours * 0.5) } } else { var day: Int = (hours/24).round() var rhours: Int = hours%24 //flat rate $15/day total += (day *15) total += (rhours*0.5) } println(total) } P/S This is a code snippet from Kotlin's project.

3rd Sep 2022, 12:10 AM
Bob Shah
Bob Shah - avatar
1 Answer
0
You can do something like : fun main(args: Array<String>) { var hours = readLine()!!.toInt() when (hours) { in 0..5 -> print(hours); in 6..23 -> print(5+(hours-5)*0.5); else -> print((hours/24).round()*15 + hours%24*0.5) } }
3rd Sep 2022, 7:01 AM
Roland
Roland - avatar