//计算排行榜
def getRanks() =
var mapRanks = Map[Char, Int]()
for rank <- read_PlainText() do
val aRank = getARank(rank)
if mapRanks.isEmpty then
mapRanks = aRank
else
mapRanks = mapRanks ++ aRank.map(t => t._1 -> (t._2 + mapRanks.getOrElse(t._1, 0)))
val seqRanks = mapRanks.toSeq.sortWith(_._2 > _._2)
for rank <- seqRanks do
println(s"${rank._1} : ${rank._2}")
//计算某一次排名
def getARank(aRank: String) =
val mapARank = Map[Char, Int]()
val len = aRank.length()
for i <- (0 to len-1) do
mapARank(aRank.charAt(i)) = (len-i)
mapARank
//输入所有排名
def setRanks() =
val fw = FileWriter(File("./ranks.dat"),false)
fw.write("")
fw.flush()
fw.close()
println("初始化完成")
try
println("接下来将输入多少行数据?")
val times = readInt()
for i <- 1 to times do
println("请输入一行数据")
setARank()
catch
case nfe: NumberFormatException => println("请输入大于等于1的数字")
@main def Main: Unit =
while true do
welcome()
readLine() match
case "1" => setRanks()
case "2" => getRanks()
case "3" => return
case _ => println("无效命令,只接受输入1、2、3")