《Spark編程基礎(chǔ)及項(xiàng)目實(shí)踐》課后習(xí)題及答案2_第1頁(yè)
《Spark編程基礎(chǔ)及項(xiàng)目實(shí)踐》課后習(xí)題及答案2_第2頁(yè)
《Spark編程基礎(chǔ)及項(xiàng)目實(shí)踐》課后習(xí)題及答案2_第3頁(yè)
《Spark編程基礎(chǔ)及項(xiàng)目實(shí)踐》課后習(xí)題及答案2_第4頁(yè)
《Spark編程基礎(chǔ)及項(xiàng)目實(shí)踐》課后習(xí)題及答案2_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第二章習(xí)題答案

實(shí)訓(xùn)代碼

完整程序如下:

文件studentinfo,txt的內(nèi)容如圖1所示,注意在Windows平臺(tái)下將studentinfo,txt保

存為UTF-8的格式。

1r女

20天/p>

1男

19北京158339C7789

1燕

20北/p>

1女

云19河/p>

2男

18河/p>

2女

器19河/p>

2男

20山東139009C8978

2男

20山/p>

3男

21四/p>

3男

20蜥159337S2780

3女

云南

3男1913122673829

19n

圖1學(xué)生信息

在Linux的/usr/local/project目錄下創(chuàng)建文件studentinfo,txt,使用命令atouch

studentinfo.txt\執(zhí)行命令"vimstudentinfo.txtv對(duì)文件進(jìn)行編輯,按“i”進(jìn)入編輯

模式,輸入圖240所示內(nèi)容,按“Esc”退出編輯狀態(tài),再執(zhí)行命令“:wq”進(jìn)行保存并退

出。

在/usr/local/project目錄下創(chuàng)建文件Studentinfo,scala,輸入內(nèi)容如下:

importscala.io._

importutil.control.Breaks._

objectStudentinfo{

vararrlnfo:Array[String]=null

defmain(args:Array[String]){

〃將/usr/local/project/studentinfo.txt的文件內(nèi)容讀入到數(shù)組中

〃一行為一個(gè)元素

vallines=for(line<-

Source.fromFile(**/usr/local/project/studentinfo.txt").getLines)

yieldline

arrlnfo=lines.toArray

varflag=true

show()

while(flag)(

print(”請(qǐng)輸入選擇序號(hào):”)

valchoice=Stdin.readLine()

breakable{

if(!isIntByRegex(choice)){

〃如果輸入不是數(shù)字,則跳出本次循環(huán)

printin("請(qǐng)輸入正確的序號(hào)”)

break

)

choice.tolntmatch(

case1=>{

varmaleCnt=count(u^")

printin("三個(gè)班級(jí)共有男生"+maleCnt+“人”)

)

case2=>{

varfemalCnt=count(“女”)

printin("三個(gè)班級(jí)共有女生"+femalCnt+"人”)

)

case3=>{

print("輸入學(xué)號(hào):”)

valstudentld=Stdin.readLine()

varmark=false

breakable{

for(i<-0untilarrlnfo.length){

varinfo=arrlnfo(i)

valarr:Array[String]=info.split(n\z")

if(arr(1)==studentld){

mark=true

p工ihLliM”班級(jí)\L學(xué)號(hào)\L姓名\L性別\L年齡籍貫\L電話”)

printin(info)

break//找到了學(xué)號(hào),就跳出breakable,終止循環(huán)

}

}

}

if(Imark){

printing查無(wú)此人”)

}

)

case4=>{

//按班級(jí)進(jìn)行分組

print(”輸入班級(jí)序號(hào):”)

valclassld=Stdin.readLine()

printin(”班級(jí)\t學(xué)號(hào)姓名'七性別年齡籍貫\t電話”)

/★★

*將arrlnfo數(shù)組使用groupBy函數(shù)按照班級(jí)序號(hào)進(jìn)行分組

*先將數(shù)組中的每個(gè)元素按照“\t”進(jìn)行分割

*提取出分割后的第一個(gè)元素(即班級(jí)序號(hào))

“按照班級(jí)序號(hào)進(jìn)行分組,返回一個(gè)Map[String,Array[String]]類型

*將返回值賦值給mapArr

*/

valmapArr=arrlnfo.groupBy(x=>x.split(0))

for(maparr<-mapArr(classld))printin(maparr)

)

case5=>{

flag=false

printin(“再見!”)

case_=>printin("輸入錯(cuò)誤,請(qǐng)重新輸入”)

//使用正則表達(dá)式判斷字符串s是否為數(shù)字

defisIntByRegex(s:String)={

valpattern=""“人(\d+).r

smatch{

casepattern(_*)=>true

case=>false

}

//展示功能頁(yè)面

defshow()={

printin(

printin("1.統(tǒng)計(jì)男生人數(shù)")

printin("2.統(tǒng)計(jì)女生人數(shù)”)

printin(?3.輸入學(xué)號(hào),打印出學(xué)生信息”)

printin("4.輸入班級(jí)序號(hào):打印出班級(jí)學(xué)生信息列表”)

printin(n5.退出“)

printin(??***************************************?

//根據(jù)指定的信息統(tǒng)計(jì)人數(shù)

defcount(param:String):Int=(

varsum=0

for(info<-arrlnfo;ifinfo.contains(param)){

sum+=1

1importscala.io._

2importutil.control.Breaks

3objectStudentinfo{

4vararrlnfo:Array[String]=null

5defmain(args:Array[String]){

6〃將/usr/local/project/stxdentinfo.txt的文件內(nèi)容讀入到數(shù)組中,一行為一個(gè)元素

7vallines=for(line<-Source.fromFile("/usr/local/project/studentinfo.txt").getLines)yieldline

8arrlnfo=lines.toArray

9varflag=true

10show()

11while(flag)(

12print("請(qǐng)輸入選擇序號(hào):")

13valchoice=Stdin.readLineO

14breakable]

15if(!isIntByRegex(choice)){

16〃如果輸入不是數(shù)字,則跳出本次循環(huán)

17printin(”請(qǐng)輸入正硝的序號(hào)”)

18break

19)

20choice.tolntmatch{

21case1=>{

22varmaleCnt=courted")

23printin("三個(gè)班級(jí)共有男生"+maleCnt+"人")

24}

25case2=>{

26varfemalCnt=com("女")

27printin("三個(gè)班級(jí)共有女生"+femalCnt+"A")

28)

1importscala.io._

2importutil.control.Breaks._

3objectStudentinfo{

4vararrlnfo:Array[String]=null

5defmain(args:Array[String]){

6〃將D:\\studentinfo.txt的文件內(nèi)容讀入到數(shù)組中,一行為一個(gè)元素

7vallines=for(line<-Source.fromFile("/usr/local/project/studentinfo.txt").getLines)yieldline

8arrlnfo=lines.toArray

9varflag=true

16show()

11while(flag){

12print("請(qǐng)輸入選擇序號(hào):")

13valchoice=Stdin.readLineO

14breakable(

15if(!isIntByRegex(choice)){

16〃如果輸入不是數(shù)字,則跳出本次循環(huán)

17printin("請(qǐng)輸入正確的序號(hào)”)

18break

19)

20choice.tolntmatch{

21case1=>{

22varmaleCnt=counted")

23printin("三個(gè)班級(jí)共有男生"+maleCnt人")

24}

25case2=>{

26varfemalCnt=count("女")

27printin("三個(gè)班級(jí)共有女生"+femalCnt+"A")

28)

29case3=>{

30print("輸入學(xué)號(hào):”)

31valstudentld=Stdin.readLine()

32varmark=false

33breakable{

34for(i<-0untilarrlnfo.length){

35varinfo=arrlnfo(i)

36valarr:Array[String]=info.split("\t")

37if(arr(l)==studentld){

38mark=true

39printin("班級(jí)\t學(xué)號(hào)\t姓名\t性別\t年齡\t籍貫\t電話”)

40println(info)

41break〃找到了學(xué)號(hào),就跳出breakable,終止循環(huán)

42}

43}

44}

45if(!mark){

46println(“查無(wú)此人”)

47}

48}

49case4=>{

50〃按班級(jí)進(jìn)行分組

51print("輸入班級(jí)序號(hào):")

52vatclassld=Stdin.readLine()

53println("班級(jí)\t學(xué)號(hào)\t姓名\t性別\t年齡\t籍貫\t電話”)

54

55/**

56*將arrlnfo數(shù)組使用groupBy函數(shù)按照班級(jí)序號(hào)進(jìn)行分組

57*先將數(shù)組中的每個(gè)元素按照“\t"進(jìn)行分割

58*提取出分割后的第一個(gè)元素(即班級(jí)序號(hào))

59*按照班級(jí)序號(hào)進(jìn)行分組,返回一個(gè)Map[String,Array[String】]類型

60*將返回值賦值給mapArr

61*/

62valmapArr=arrlnfo.groupBy(x=>x.split("\t")(1))

63for(maparr<-mapArr(classId))println(maparr)

64}

65case5=>{

66flag=false

67println("再見!")

68}

69case_=>println("輸入錯(cuò)誤,請(qǐng)重新輸入")

70)

71}

72)

73}

74//使用正則表達(dá)式判斷字符串s是否為數(shù)字

75defisIntByRegex(s:String)={

76valpattern=^(\d+)$""".r

77smatch{

78casepattern(_*)=>true

79case_=>false

80}

81}

82//展示功能頁(yè)面

83defshow()={

84println("****************************************)

85println("l.統(tǒng)計(jì)男生人數(shù)”)

86printingM2.統(tǒng)計(jì)女生人數(shù)”,

87println("3.輸入學(xué)號(hào),打印出學(xué)生信息”)

88printlnC4.輸入班級(jí)序號(hào),打印出班級(jí)學(xué)生信息列表“)

89println("5.退出“)

90**************************************")

91)

92

93//根據(jù)指定的信息統(tǒng)計(jì)人數(shù)

94defcount(param:String):Int={

95varsum=0

96for(info<-arrlnfo;ifinfo.contains(param)){

97sum+=1

98}

99sum

100}

101)

102

運(yùn)行結(jié)果如圖2-50所示。

1.統(tǒng)計(jì)男生人數(shù)

2.統(tǒng)計(jì)女生人數(shù)

3.輸入字號(hào),打印出學(xué)生信息

.輸入班級(jí)序號(hào),打印出班級(jí)學(xué)生信息列表

5.退出

**************************************

請(qǐng)輸入選擇序號(hào):a

請(qǐng)輸入正確的序號(hào)

請(qǐng)輸入選擇序號(hào):1

三個(gè)班級(jí)共有男生8人

請(qǐng)輸入選擇序號(hào):2

三個(gè)班級(jí)共有女生4人

請(qǐng)輸入選擇序號(hào):3

輸入學(xué)號(hào):I時(shí)

班級(jí)學(xué)號(hào)姓名性別年齡籍貫電話

1102李凱男1915833907789

請(qǐng)輸入選擇序號(hào):4

輸入班級(jí)序號(hào):

2籍貫

班級(jí)學(xué)號(hào)性別年齡電話

河北

2105李盆甜18河/p>

210619山/p>

王小源

216720山/p>

2108張一田2015163542267

請(qǐng)輸入選擇序號(hào):

圖2-50學(xué)生信息查詢程序運(yùn)行結(jié)果

課后習(xí)題答案

1.填空題

(1)Scala運(yùn)行在Java虛擬機(jī)(JVM)之上,源代碼通過(guò)scalac編譯器編譯成Java字節(jié)

碼,Scala兼容現(xiàn)有的Java程序。

(2)Scala是純面向?qū)ο蟮?,每個(gè)值都是一個(gè)對(duì)象,包括基本數(shù)據(jù)類型和函數(shù),每個(gè)操

作都是方法的調(diào)用。Sc都a是一匚函數(shù)式編程語(yǔ)言,每個(gè)函數(shù)都是一個(gè)值。

(3)REPL是一個(gè)交互式解釋器,是Scala提供的一個(gè)重要的交互模式的工具,可以即時(shí)編

譯、運(yùn)行代碼并返回結(jié)果。安裝好Scala后,在命令行下運(yùn)行“scala”就可以啟動(dòng)它。

(4)Scala中沒(méi)有基本類型的概念,Scala中沒(méi)有原生的數(shù)據(jù)類型,所有的數(shù)據(jù)類型都是

對(duì)象。

(5)Scala使用兩個(gè)關(guān)鍵字來(lái)聲明變量:val和var

2.選擇題

(1)下列(C)不屬于Scala數(shù)據(jù)類型。

A.IntB.DoubleC.intD.Unit

(2)下面的Scala語(yǔ)句能正確執(zhí)行的是(B)。

A.vala=2;a=3B.vara=2;a=3

C.vara=2;a="3"D.vala=2;a="3"

(3)以下說(shuō)法正確的是(A)

A,數(shù)組中的元素都屬于同一個(gè)數(shù)據(jù)類型

B.默認(rèn)情況下,Scala使用的是可變映射

C.List中不可以存放重復(fù)對(duì)象

D.Set中可以有重復(fù)對(duì)象且Set中元素是有序的

(4)關(guān)于函數(shù):

defsum(args:Int*):Int={

varr:Int=O

for(argV-args){

r+=arg

)

r

}

得到的結(jié)果不一致的是(D)。

A.sum(l,2,3)B.sjm(6)

C.sum(2,4)D.sum(l,l,l,2)

(5)下列關(guān)于元組Tuple的說(shuō)法錯(cuò)誤的是(D)。

A.元組可以包含不同類型的元素

B,元組是不可變的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論