object demo3 {
def main(args: Array[String]): Unit = {
var file = readTxt("C:\\score.txt")
static(file)
//对男生和女生成绩做分别统计
var file_males = file.toBuffer
var file_females = file.toBuffer
for(i <- 1 until file.length){
var row = file(i)
if (row.split('\t')(1) != "male"){
file_males -= row
}
if (row.split('\t')(1) != "female"){
file_females -= row
}
}
println("males")
static(file_males.toArray)
println("females")
static(file_females.toArray)
}
def static(file:Array[String])={
//缓冲数组
var course1 = ArrayBuffer[String]()
var row = file(0).split('\t')
for(i <- 2 until row.length){
course1 += row(i)
}
val course = course1.toArray
var data = dim2B(course.length)
for(i <- 1 until file.length){
row = file(i).split('\t')
for(j <- 2 until row.length){
data(j-2) += row(j).toDouble
}
}
//在输出时,使用prinf的%-8s来给每个元素设置固定大小位置,实现数据打印上下对齐
printf("%-8s\t%-8s\t%-8s\t%-8s\n","course","average","min","max")
for(i <- 0 until course.length){
printf("%-8s\t%-8s\t%-8s\t%-8s\n",course(i),aver(data(i).toArray),data(i).toArray.min,data(i).toArray.max)
}
}
//二维数组
def dim2B(rows : Int)={
val d2 = new Array[ArrayBuffer[Double]](rows)
for (k <-0 until rows ) {
d2(k) = new ArrayBuffer[Double]()
}
d2
}
//读取文件
def readTxt(filePath: String) ={
//以指定的UTF-8字符集读取文件,第一个参数可以是字符串或者是java.io.File
val source = Source.fromFile(filePath, "UTF-8")
//将所有行放到数组中
val lines = source.getLines().toArray
source.close()
lines
}
//数组求最大值最小值有现成函数调用,无需编写
def max(a:Array[Double]):Double={
var res = 0.0
for(i <- a){
if (i>res){
res = i
}
}
res.formatted("%.2f").toDouble
}
def min(a:Array[Double]):Double={
var res = 100.0
for(i <- a){
if (i < res){
res = i
}
}
res.formatted("%.2f").toDouble
}
def aver(a:Array[Double]):Double={
var res = 0.0
for(i <- a){
res = res + i
}
(res/a.length).formatted("%.2f").toDouble
}
}
1.1 案例要求
1)读取学生成绩:将学生成绩写入TXT文件,通过读取TXT文件将学生成绩放入到数组中;
注意:读取编码格式;
2)求成绩平均值:定义aver函数,实现求平均值;
注意:有现成的最值求值函数,无需自己编写实现;
3)统计学生成绩:将数组当中的各科成绩读取到缓冲数组中,对缓冲数组进行求最值平均的操作;
注意:使用缓冲数组进行操作,因为其为可变数组,便于操作;
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.youkuaiyun.com/weixin_49588575/article/details/130614827