package ex_score
object ex01 {
def main(args: Array[String]): Unit = {
//1. 读出项目目录下的score.txt文件
val lines = scala.io.Source.fromFile("score.txt").getLines()
// 按行读取
for(line <- lines){
println(line)
}
}
}
package ex_score
object ex01 {
def main(args: Array[String]): Unit = {
//1. 读出项目目录下的score.txt文件
val lines = scala.io.Source.fromFile("score.txt").getLines()
// 跳过第一行,它表示表头
// 姓名,语文,数学
lines.next()
while(lines.hasNext){
val line = lines.next()
val list = line.split(" ")
println(s"姓名: ${list(0)}")
println(s"语文: ${list(1)}")
println(s"数学: ${list(2)}")
println(s"英语: ${list(3)}")
}
}
}
// 1. 包声明:将代码归属到ex_score包下,用于组织和管理代码结构
// 2. 定义单例对象ex01:Scala中没有“类的静态方法”,通过单例对象(Object)实现程序入口
// 3. 程序主入口方法(main方法):Scala程序的执行起点
// 4. 读取score.txt文件,获取文件的行迭代器
//6. 循环读取剩余行:hasNext判断是否还有未读取的行,有则继续循环
// 7. 获取当前行的内容
// 8. 按空格拆分当前行内容:split(" ")将一行字符串按空格分割成字符串数组
// 9. 打印拆分后的字段:通过数组下标获取姓名、语文、数学、英语成绩并格式化输出
case class Stu(name:String, yuwen:Double, shuxue:Double, yingyu:Double)
def main(args: Array[String]): Unit = {
//1. 读出项目目录下的score.txt文件
// lines 就是迭代器
val lines = scala.io.Source.fromFile("score.txt").getLines()
// 跳过第一行, 它表示表头
// 语文, 数学, 英语
lines.next()
val stuList = scala.collection.mutable.ListBuffer[Stu]()
while(lines.hasNext){
val line = lines.next()
val list = line.split(" ")
// println(s"姓名: ${list(0)}")
// println(s"语文: ${list(1)}")
// println(s"数学: ${list(2)}")
// println(s"英语: ${list(3)}")
stuList += Stu(list(0), list(1).toDouble, list(2).toDouble, list(3).toDouble)
}
stuList.foreach(stu => {
println(s"${stu.name}, 数学: ${stu.shuxue}分")
})
}
object ex01 {
case class Stu(name: String, yuwen: Double, shuxue: Double, yingyu: Double)
def main(args: Array[String]): Unit = {
//1. 读出项目目录下的score.txt文件
val lines = scala.io.Source.fromFile("score.txt").getLines() // lines 就是迭代器
// 跳过第一行, 它表示表头
// 语文, 数学, 英语
lines.next()
val stuList = scala.collection.mutable.ListBuffer[Stu]()
while (lines.hasNext) {
val line = lines.next()
val list = line.split(" ")
stuList += Stu(list(0), list(1).toDouble, list(2).toDouble, list(3).toDouble)
}
// 3 写入结果到新的文件
val fileWriter = new FileWriter("score_result.txt")
stuList.foreach(stu => {
val total = stu.yingyu + stu.shuxue + stu.yuwen
val avg = total / 3
fileWriter.write(s"${stu.name}; 语文: ${stu.yuwen}分 数学: ${stu.shuxue}分 英语: ${stu.yingyu}分 总分: ${total} 平均分: ${avg}\n")
})
// 输出英语学科平均分
fileWriter.write("英语平均分: ? 数学平均分: ? 语文平均分: ?\n")
fileWriter.close()
}
}