尝试编写一个简单的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
非常感谢任何帮助!
答案 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)