




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度診所執(zhí)業(yè)醫(yī)師醫(yī)療風(fēng)險(xiǎn)防控聘用合同
- 二零二五年度手車轉(zhuǎn)讓與綠色出行推廣合同
- 二零二五年度投資分紅股收益分配協(xié)議
- 二零二五年度汽車展覽會(huì)參展商展位電力合同
- 2025年度道路破碎修復(fù)與再生利用合同
- 2025年度青貯收割作業(yè)與農(nóng)業(yè)物聯(lián)網(wǎng)平臺(tái)合作協(xié)議
- 二零二五年度口腔診所醫(yī)生培訓(xùn)與薪酬管理合同
- 二零二五年度商業(yè)秘密保護(hù)與員工保密義務(wù)合同
- 二零二五年度多功能辦公場(chǎng)所租賃服務(wù)協(xié)議
- 2025年度蔬菜大棚承包與品牌授權(quán)合作協(xié)議
- 《企業(yè)員工培訓(xùn)國(guó)內(nèi)外文獻(xiàn)綜述》4800字
- 麻醉藥品與精神藥品不良反應(yīng)的防治 (1) - 副本課件
- 車輛保險(xiǎn)登記臺(tái)賬參考模板范本
- 三年級(jí)下冊(cè)數(shù)學(xué)教案-速度、時(shí)間和路程 滬教版
- 礦山道路施工組織設(shè)計(jì)方案
- 正弦函數(shù)的圖像與性質(zhì)優(yōu)秀課件
- 山東省任氏宗親分布村落
- 北師大版小學(xué)數(shù)學(xué)五年級(jí)下冊(cè)《有趣的折疊》說(shuō)課稿
- 陜西省建設(shè)工程長(zhǎng)安杯獎(jiǎng)省優(yōu)質(zhì)工程結(jié)構(gòu)備案和復(fù)查的要求
- 典型示功圖分析(全)
- 水生觀賞動(dòng)物鑒賞與維護(hù)課程
評(píng)論
0/150
提交評(píng)論