标签:不同的 blog end table 要求 字符串表 构造函数 sharp array
实验2-Scala编程初级实践-题目-厦门大学-林子雨-Spark编程基础(Scala版)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
case class Point( var x:Double , var y:Double) extends Drawable{ def shift(X:Double ,Y:Double){ x += X y += Y } } 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 test3 { 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 circle = new Circle(Point(10,10),5) circle.draw circle.moveTo(Point(30,20)) circle.draw circle.zoom(0.5) circle.draw } } |
编译运行结果:
统计学生成绩
学生的成绩清单格式如下所示,第一行为表头,各字段意思分别为学号、性别、课程名 1、课程名 2 等,后面每一行代表一个学生的信息,各字段之间用空白符隔开
给定任何一个如上格式的清单(不同清单里课程数量可能不一样),要求尽可能采用函 数式编程,统计出各门课程的平均成绩,最低成绩,和最高成绩;另外还需按男女同学分开, 分别统计各门课程的平均成绩,最低成绩,和最高成绩。 测试样例 1 如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
|
import scala.collection.mutable.ArrayBuffer object test4 { def main(args: Array[String]): Unit = { var students:ArrayBuffer[Student] = new ArrayBuffer[Student]() students.append( new Student(301610, "male" , 80, 64, 78)) students.append( new Student(301611, "female" , 65, 87, 58)) students.append( new Student(301612, "female" , 44, 71, 77)) students.append( new Student(301613, "female" , 66, 71, 91)) students.append( new Student(301614, "female" , 70, 71, 100)) students.append( new Student(301615, "male" , 72, 77, 72)) students.append( new Student(301616, "female" , 73, 81, 75)) students.append( new Student(301617, "female" , 69, 77, 75)) students.append( new Student(301618, "male" , 73, 61, 65)) students.append( new Student(301619, "male" , 74, 69, 68)) students.append( new Student(301620, "male" , 76, 62, 76)) students.append( new Student(301621, "male" , 73, 69, 91)) students.append( new Student(301622, "male" , 55, 69, 61)) students.append( new Student(301623, "male" , 50, 58, 75)) students.append( new Student(301624, "female" , 63, 83, 93)) students.append( new Student(301625, "male" , 72, 54, 100)) students.append( new Student(301626, "male" , 76, 66, 73)) students.append( new Student(301627, "male" , 82, 87, 79)) students.append( new Student(301628, "female" , 62, 80, 54)) students.append( new Student(301629, "male" , 89, 77, 72)) println(students.length) println(students(1).toString) getData(students) getDataMale(students) getDataFeMale(students) } def getData(value: ArrayBuffer[Student]): Unit ={ var Mathaverage:Double=0; var MathSum:Double = 0; var MathMin:Double = value(0).Math; var MathMax:Double = 0; var Englishaverage:Double=0; var EnglishSum:Double = 0; var EnglishMin:Double = value(0).English; var EnglishMax:Double = 0; var Physicsaverage:Double=0; var PhysicsSum:Double = 0; var PhysicsMin:Double = value(0).Physics; var PhysicsMax:Double = 0; var number = value.length; for (i <- 0 until value.length){ //三科总数 MathSum = value(i).Math+MathSum EnglishSum = value(i).English+EnglishSum PhysicsSum = value(i).Physics+PhysicsSum //最大和最小 if (value(i).Math>MathMax){ MathMax=value(i).Math; } if (value(i).English>EnglishMax){ EnglishMax=value(i).English; } if (value(i).Physics>PhysicsMax){ PhysicsMax=value(i).Physics; } if (value(i).Math<MathMin){ MathMin=value(i).Math; } if (value(i).English<EnglishMin){ EnglishMin=value(i).English; } if (value(i).Physics<PhysicsMin){ PhysicsMin=value(i).Physics; } } //平均值 Mathaverage=MathSum/number Englishaverage=EnglishSum/number Physicsaverage=PhysicsSum/number println( "course\t average\t min\t max \t" ) println( "Math:\t " +Mathaverage+ "\t\t" +MathMin+ "\t " +MathMax) println( "English:\t" +Englishaverage+ "\t" +EnglishMin+ "\t " +EnglishMax) println( "Physics:\t" +Physicsaverage+ "\t" +PhysicsMin+ "\t " +PhysicsMax) } def getDataMale(value: ArrayBuffer[Student]): Unit = { var Mathaverage: Double = 0; var MathSum: Double = 0; var MathMin: Double = value(0).Math; var MathMax: Double = 0; var Englishaverage: Double = 0; var EnglishSum: Double = 0; var EnglishMin: Double = value(0).English; var EnglishMax: Double = 0; var Physicsaverage: Double = 0; var PhysicsSum: Double = 0; var PhysicsMin: Double = value(0).Physics; var PhysicsMax: Double = 0; var number = 0; for (i <- 0 until value.length) { if (value(i).gender. equals ( "male" )) { number = number + 1 //三科总数 MathSum = value(i).Math + MathSum EnglishSum = value(i).English + EnglishSum PhysicsSum = value(i).Physics + PhysicsSum //最大和最小 if (value(i).Math > MathMax) { MathMax = value(i).Math; } if (value(i).English > EnglishMax) { EnglishMax = value(i).English; } if (value(i).Physics > PhysicsMax) { PhysicsMax = value(i).Physics; } if (value(i).Math < MathMin) { MathMin = value(i).Math; } if (value(i).English < EnglishMin) { EnglishMin = value(i).English; } if (value(i).Physics < PhysicsMin) { PhysicsMin = value(i).Physics; } } } //平均值 Mathaverage=MathSum/number Englishaverage=EnglishSum/number Physicsaverage=PhysicsSum/number println( "course\t average\t min\t max \t(Male)" ) Mathaverage=Mathaverage.toInt Englishaverage=Englishaverage.toInt Physicsaverage=Physicsaverage.toInt println( "Math:\t " +Mathaverage+ "\t\t" +MathMin+ "\t " +MathMax) println( "English:\t " +Englishaverage+ "\t\t" +EnglishMin+ "\t " +EnglishMax) println( "Physics:\t " +Physicsaverage+ "\t\t" +PhysicsMin+ "\t " +PhysicsMax) } def getDataFeMale(value: ArrayBuffer[Student]): Unit ={ var Mathaverage:Double=0; var MathSum:Double = 0; var MathMin:Double = value(1).Math; var MathMax:Double = 0; var Englishaverage:Double=0; var EnglishSum:Double = 0; var EnglishMin:Double = value(1).English; var EnglishMax:Double = 0; var Physicsaverage:Double=0; var PhysicsSum:Double = 0; var PhysicsMin:Double = value(1).Physics; var PhysicsMax:Double = 0; var number = 0; for (i <- 0 until value.length){ if (value(i).gender. equals ( "female" )){ number=number+1 //三科总数 MathSum = value(i).Math+MathSum EnglishSum = value(i).English+EnglishSum PhysicsSum = value(i).Physics+PhysicsSum //最大和最小 if (value(i).Math>MathMax){ MathMax=value(i).Math; } if (value(i).English>EnglishMax){ EnglishMax=value(i).English; } if (value(i).Physics>PhysicsMax){ PhysicsMax=value(i).Physics; } if (value(i).Math<MathMin){ MathMin=value(i).Math; } if (value(i).English<EnglishMin){ EnglishMin=value(i).English; } if (value(i).Physics<PhysicsMin){ PhysicsMin=value(i).Physics; } } } //平均值 Mathaverage=MathSum/number Englishaverage=EnglishSum/number Physicsaverage=PhysicsSum/number println( "course\t average\t min\t max \t(FeMale)" ) Mathaverage=Mathaverage.toInt Englishaverage=Englishaverage.toInt Physicsaverage=Physicsaverage.toInt println( "Math:\t " +Mathaverage+ "\t\t" +MathMin+ "\t " +MathMax) println( "English:\t " +Englishaverage+ "\t\t" +EnglishMin+ "\t " +EnglishMax) println( "Physics:\t " +Physicsaverage+ "\t\t" +PhysicsMin+ "\t " +PhysicsMax) } } class Student(id1:Int,gender1:String,Math1:Double,English1:Double,Physics1:Double){ var id:Int = id1 var gender:String = gender1 var Math:Double = Math1 var English:Double = English1 var Physics:Double = Physics1 override def toString = s "Student($id, $gender, $Math, $English, $Physics)" } |
编译运行之后的结果:
标签:不同的 blog end table 要求 字符串表 构造函数 sharp array
原文地址:https://www.cnblogs.com/kt-xb/p/12300958.html