2020年寒假学习进度第二天

Posted ljm-zsy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2020年寒假学习进度第二天相关的知识,希望对你有一定的参考价值。

今天主要研究了spark实验二的第一部分的Scala编写,看完代码后发现需要在REPL模式下运行,经过查证发现需要安装scala脚本,所以尝试在虚拟机中安装scala,成功后使用给的代码尝试运行,但是出错,提示没有找到类的定义,经过查证,发现是代码中缺少类得定义。改正后可以正常运行。

import io.StdIn._
  object Test {
      def main(args: Array[String]){
          var Sn:Float = 0
  
          var n:Float=1
  
      println("please input q:")
  
     val q = readInt()
 
     while(Sn<q){
         Sn+=(n+1)/n
         n+=1
     }
 
     println(s"Sn=$Sn")
     }
 }

  技术图片

 第二个实验的第二个部分出现了这个unclosed string literal问题,百度上说的都是字符串不闭合,我仔细研究了一下代码,发现是闭合的,于是我把出问题的代码注释掉。尝试运行,发现可以的,而后我又去掉注释,就没问题了,代码就是这么神奇,格式也会有影响。

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)}
}
abstract class Shape(var location:Point){//location是Shape的一个可变字段
def moveTo(newLocation:Point){ //默认实现,只是修改位置
location = newLocation
}
 def zoom(scale:Double)
}
class Line(beginPoint:Point,var endPoint:Point) extends 
Shape(beginPoint) with Drawable{
override def draw(){
println(s"Line:(${location.x},${location.y})--(${endPoint.x},${endPoint.y})")
} 
override def moveTo(newLocation:Point){
endPoint.shift(newLocation.x - location.x,newLocation.y -
location.y) //直线移动时,先移动另外一个端点
location = newLocation //移动位置
}
override def zoom(scale:Double){
val midPoint = Point((endPoint.x + location.x)/2,(endPoint.y + 
location.y)/2) //求出中点,并按中点进行缩放
location.x = midPoint.x + scale * (location.x - midPoint.x)
location.y = midPoint.y + scale * (location.y -midPoint.y)
endPoint.x = midPoint.x + scale * (endPoint.x - midPoint.x)
endPoint.y = midPoint.y + scale * (endPoint.y -midPoint.y)
}}
class Circle(center:Point,var radius:Double) extends Shape(center) 
with Drawable{
override def draw(){
println(s"Circle center:(${location.x},${location.y}),R=$radius")
}
override def zoom(scale:Double){
radius = radius*scale //对圆的缩放只用修改半径
} }
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
 } }

  

技术图片

 

 

 

总结:做实验时遇到问题要仔细地查询解决办法,所有问题都可以解决的。

 

以上是关于2020年寒假学习进度第二天的主要内容,如果未能解决你的问题,请参考以下文章

2020年寒假第5次学习进度记录

2020年寒假第6次学习进度记录

2020年寒假第7次学习进度记录

2020年寒假学习进度第六天

2020年寒假学习进度第十五天

2020年寒假学习进度第九天