Scala編程初級實踐

      網友投稿 1277 2022-05-29

      名稱

      Scala編程初級實踐

      目的

      1.掌握Scala語言的基本語法、數據結構和控制結構;

      2.掌握面向對象編程的基礎知識,能夠編寫自定義類和特質;

      3.掌握函數式編程的基礎知識,能夠熟練定義匿名函數。熟悉Scala的容器類庫的基本層次結構,熟練使用常用的容器類進行數據;

      4.熟練掌握Scala的REPL運行模式和編譯運行方法。

      內容與結果分析

      計算級數

      請用腳本的方式編程計算并輸出下列級數的前n項之和Sn,直到Sn剛好大于或等于q為止,其中q為大于0的整數,其值通過鍵盤輸入。

      例如,若q的值為50.0,則輸出應為:Sn=50.416695。請將源文件保存為sn.scala,在REPL模式下測試運行,測試樣例:q=1時,Sn=2;q=30時,Sn=30.891459;q=50時,Sn=50.416695。

      要求:選取以下任意兩種方式完成

      ①repl環境下一行一句運行

      q=1時

      q=30時

      q=50時

      ②腳本文件test1.scala存放不帶有對象和main的所有代碼,在REPL中:load運行

      先編寫sn.scala

      當q=1時

      當q=30時

      當q=50時

      2 使用scala語言編程輸出九九乘法表

      創建99.scala

      輸入代碼

      import scala.collection.mutable.ArrayBuffer

      object NineNineForm {

      def main(args: Array[String]): Unit = {

      println("************ 九九乘法表 **********")

      for(i<- 1 until 10){

      val array=new ArrayBufferString

      for(j<- 1 until i+1){

      var a:String =j+""+i+"="+ij+" "

      array+=a

      }

      array.foreach(print)

      println()

      }

      }

      }

      3 統計List列表中中單詞出現的頻率,例如:

      創建lzlcipin.scala

      輸入代碼

      val list1=List(“I am a student”,” love database”,”Hadoop is good”,”spark is good”)

      輸出結果為:鍵值對形式輸出

      import collection.mutable.Map

      val list1 = List(“I am lizhuolang” , “I love lizhuolang” , “Hadoop is good” , “Scala is good”)

      var m = Map.empty[String , Int]

      val list2 = list1 flatMap{a => a.split(" ")}

      val f : String => Unit = {w =>

      if (m.contains(w)) m(w) += 1

      else m(w) = 1

      }

      list2.foreach(f)

      m foreach {kv => println(kv._1,kv._2)}

      4 統計學生成績

      創建grade1.txt

      測試樣例文件的路徑

      將每行按空白字符(包括空格/制表符)分開

      由于后面涉及操作列表的函數,故用toList將Iterator改為List

      originalData的類型為List[Array[String]]

      originalData:List[Array[String]]類型

      獲取文件中第一行信息(表頭)

      獲取第一行中的課程名

      去除第一行剩下的數據

      allStudents:List[Array[String]]類型

      按性別劃分為兩個容器

      男生人數和女生人數

      for對每門課程生成一個三元組,分別表示平均分,最低分和最高分

      for循環執行3次,1次對應一門課程,每次for循環會生成一個temp,該temp是一個List類型,用于存放某門課程的分數,語句val temp = allStudents map {elem=>elem(i).toDouble}表示對 allStudents進行映射操作,allStudents原來是List類型,故temp也是List類型。具體映射方法是:將allStudents的每一行映射成該行第i列的Double表示。下表是以第一次for循環為例,輸出的temp結果表示:

      for推導式,將for的結果放在result中,result是一個向量,向量中的元素個數等于課程門數,每一個元素是一個三元組tuple,對每門課程生成一個三元組,分別表示平均分,最低分和最高分

      輸出結果

      輸出男生的結果

      輸出女生的結果

      出現的問題及解決方案

      1.運行代碼時出現編碼錯誤

      Scala編程初級實踐

      錯誤:

      錯誤原因:

      因為wps里的空格和linux里的空格編碼方式不同,空格有如下分類

      \u00A0:不間斷空格,主要用在office中,讓一個單詞在結尾處不會換行顯示

      \u0020:半角空格(英文符號),代碼中常用的

      ?\u3000:全角空格(中文符號),中文文章中使用

      解決辦法:

      我們無法看出空格的區別,但是編譯器可以,所以只能手動更換代碼里所有的空格

      2.數組越界

      錯誤:

      數組越界

      解決辦法:

      網上找的方法都沒用,最后自己手動重輸了一下grade1.txt才得以解決

      Scala

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:配置Tomcat的訪問日志和線程數
      下一篇:MySQL系列之事務日志Undo log學習筆記
      相關文章
      亚洲欧洲日本在线| 亚洲AV成人片无码网站| 在线a亚洲v天堂网2018| 亚洲精品无码mⅴ在线观看 | 亚洲videosbestsex日本| 精品亚洲A∨无码一区二区三区| 久久青青草原亚洲AV无码麻豆 | 亚洲男人av香蕉爽爽爽爽| 亚洲精品成人久久久| 亚洲精品天堂成人片?V在线播放| 亚洲Av无码乱码在线观看性色 | 亚洲黄色高清视频| 7777久久亚洲中文字幕蜜桃| 亚洲欧洲另类春色校园小说| 亚洲成a人片77777群色| 亚洲三级中文字幕| 亚洲综合国产成人丁香五月激情| 亚洲色www永久网站| 亚洲av永久中文无码精品综合 | 国产精品亚洲小说专区| 亚洲av中文无码| 亚洲综合亚洲综合网成人| 亚洲码国产精品高潮在线| 亚洲AV日韩AV永久无码下载| 久久亚洲AV无码精品色午夜| 亚洲另类精品xxxx人妖| 亚洲一本一道一区二区三区| 国产精品亚洲一区二区无码| av在线亚洲欧洲日产一区二区| 亚洲人成人77777网站| 亚洲av鲁丝一区二区三区| 亚洲高清资源在线观看| 亚洲国产成人久久99精品| 亚洲中文字幕无码中文字| 99亚洲精品卡2卡三卡4卡2卡| 国产日产亚洲系列最新| 亚洲AV永久精品爱情岛论坛| 亚洲视频一区在线| 一本色道久久综合亚洲精品蜜桃冫 | 波多野结衣亚洲一级| 亚洲AV无码一区二区三区电影|