object shiyan21{ def main(args: Array[String]) : Unit = { import scala.io.StdIn println("请输入Q值(大于0的整数)") val q = StdIn.readDouble() var Sn : Double = 0.0 var i : Double = 1.0 while(q > Sn ){ Sn = Sn + ((i+1)/i) i = i+1 } print("q="+q) println(" ,Sn="+Sn) }
case class Point(var x:Double,var y:Double) extends Drawable{ def shift(deltaX:Double,deltaY:Double){x+=deltaX;y+=deltaY} } trait Drawable{ def draw(){println(this.toString)} } // 请完成 Shape 类、Line 类和 Circle 类的定义。 abstract class Shape extends Drawable{ def moveTo(point:Point) def zoom(multiple:Double) def draw() } class Line(var point1:Point,var point2:Point) extends Shape{ def zoom(multiple:Double){ val x = (point1.x + point2.x)/2 val y = (point1.y + point2.y)/2 point1.x = (point1.x - x)*multiple point1.y = (point1.y - y)*multiple point2.x = (point2.x - x)*multiple point2.y = (point2.y - y)*multiple } def moveTo(point:Point){ val changex = point1.x-point.x val changey = point1.y-point.y point1.x = point.x point2.y = point.y point2.x = point2.x - changex point2.y = point2.y - changey } override def draw(){ println("Line:("+point1.x+","+point1.y+")--("+point2.x+","+point2.y+")") } } class Circle(var point:Point,var R:Double) extends Shape{ def zoom(multiple:Double){ R = R*multiple } def moveTo(point:Point){ this.point.x = point.x this.point.y = point.y } override def draw(){ println("Circle center:("+point.x+","+point.y+"),R="+R) } } object MyDraw{ def main(args: Array[String]) { val p=new Point(10,30) p.draw val line1 = new Line(Point(0,0),Point(20,20)) line1.draw line1.moveTo(Point(5,5)) //移动到一个新的点 line1.draw line1.zoom(2) //放大两倍 line1.draw val cir= new Circle(Point(10,10),5) cir.draw cir.moveTo(Point(30,20)) cir.draw cir.zoom(0.5) cir.draw } }
Id | gender | Math | English | Physics |
301610
|
male | 80 | 64 | 78 |
301611 | female | 65 | 87 | 58 |
... |
object scoreReport { def main(args:Array[String]) { //假设数据在当前目录下 val inputFile=scala.io.Source.fromFile("test2-3.txt") //"\\s"是字符串正则表达式,将每行按空白字符(包括空格/制表符)分开 //由于可能涉及多次遍历,通过toList将Itertor装为List //originalData的类型为List[Array[String]] val originalData=inputFile.getLines.map{_.split{"\\s+"}}.toList val courseNames=originalData.head.drop(2) //获取第一行中的课程名 val allStudents=originalData.tail //去除第一行剩下的数据 val courseNum=courseNames.length def statistc(lines:List[Array[String]])= { //for推导式,对每门课程生成一个三元组,分别表示总分,最低分和最高分 (for(i<- 2 to courseNum+1) yield { //取出需要统计的列 val temp =lines map { elem=>elem(i).toDouble } (temp.sum,temp.min,temp.max) })map{case(total,min,max)=>(total/lines.length,min,max)} //最后一个map对for的结果进行修改,将总分转为平均分 } //输出结果函数 def printResult(theresult:Seq[(Double,Double,Double)]) { //遍历前调用zip方法将课程名容器和结果容器合并,合并结果为二元组容器 (courseNames zip theresult)foreach { case(course,result)=> println(f"${course+":"}%-10s${result._1}%5.2f${result._2}%8.2f${result._3}%8.2f") } } //分别调用两个函数统计全体学生并输出结果 val allResult=statistc(allStudents) println("course average min max") printResult(allResult) //按性别划分为两个容器 val (maleLines,femaleLines)=allStudents partition { _(1)=="male" } //分别调用两个函数统计男学生并输出结果 val maleResult=statistc(maleLines) println("course average min max") printResult(maleResult) //分别调用两个函数统计女学生并输出结果 val femaleResult=statistc(femaleLines) println("course average min max") printResult(femaleResult) } }
2020寒假 学习进度笔记6:实验2-Scala编程初级实践
原文:https://www.cnblogs.com/gothic-death/p/12257130.html