Math.max没有选出最大数字

时间:2018-02-19 22:51:48

标签: scala

尝试编写一个简单的scala程序,将用户输入作为int,将它们存储在元组中,然后从元组中选择最大数。我不确定为什么我的代码无效。

import scala.io.StdIn._
println("Please enter four numbers.")
val one = readInt()
val two = readInt()
val three = readInt()
val four = readInt()
val numbers = (one, two, three, four)
println(math.max(numbers))

我得到的错误:

C:\Users\Tyler\Documents\School\CSC10101\Mimir Assignments\max.scala:8: error: overloaded method value max with alternatives:
  (x: Double,y: Double)Double <and>
  (x: Float,y: Float)Float <and>
  (x: Long,y: Long)Long <and>
  (x: Int,y: Int)Int
 cannot be applied to ((Int, Int, Int, Int))
println(math.max(numbers))
             ^
one error found

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

math.max只能应用于2个参数 - 你有4个。如果你有4个数字,你可以做的是:

math.max(math.max(math.max(one, two), three), four)

要接受@Javier在下面评论中提出的建议,如果您的号码是在Seq或其他一些集合中收集的,则可以应用reduce更高阶的功能:

List(one, two, three, four).reduce(math.max)

甚至更好:

List(one, two, three, four).max

答案 1 :(得分:0)

您问题的示例代码。

import scala.io.StdIn._
val numbers = for (_ <- 0 until 4) yield readInt()
val maxNumber = numbers.reduce(math.max)
println(maxNumber)