课程名称 | Spark大数据分析 | 实验室名称 | |
---|---|---|---|
实验名称 | Scala程序设计进阶 | ||
指导老师 | 成绩 |
一、实验任务及结果
1. 构造Person类。包括姓名(name),性别(sex)和年龄(age)。提供所有属性的set和get函数,提供print函数打印其信息;构造Student类继承Person类,并增加学校(school),学号(studentID)。并对其进行测试。
class Person(name: String, sex: String, age: Int) {
var Name: String = name
var Sex: String = sex
var Age: Int = age
def setName(name: String): Unit ={
Name = name
}
def setSex(sex: String): Unit ={
Sex = sex
}
def setAge(age: Int): Unit = {
Age = age
}
def getName(): String ={
return Name
}
def getSex(): String ={
return Sex
}
def getAge(): Int = {
return Age
}
def print(): Unit = {
println("name: " + name, "sex: " + sex, "age: " + age.toString)
}
}
class Student( name: String, sex: String, age: Int, school: String, studentID: String ) extends Person(name, sex, age){
var School: String = school
var StudentID: String = studentID
def setSchool(school: String): Unit ={
School = school
}
def setStudentID(id: String): Unit ={
StudentID = id
}
def getSchool(): String = {
return School
}
def getStudentID: String = {
return StudentID
}
override def print(): Unit = {
super.print()
println("school: " + School + "StudentID" + StudentID)
}
}
object Test {
def main(args: Array[String]): Unit = {
val person = new Person("zhangsan", "boy", 18)
println(person.getName(), person.getAge(), person.getSex())
person.setName("lisi"); person.setSex("girl"); person.setAge(19)
person.print()
val student = new Student("wangwu", "boy", 11, "Tsinghua", "12345")
println(student.getName(), student.getAge(), student.getSex(), student.getSchool(), student.getStudentID)
student.setSchool("Peking"); student.setStudentID("5454"); student.setSex("girl")
student.print()
}
}
2、根据数据文件2016phonelocation,编写程序实现功能:运行程序,用户输入任意省份,输出这个省份号码段的个数,电信、移动、联通各占多少个。
import scala.io.{Source, StdIn}
object count{
def checkProvince(province: String)={
val data = for(line <- Source.fromFile("2016phonelocation.txt").getLines)
yield line
var num =Array(0,0,0,0)
for (line <- data){
val value = line.split(',')
if (value(2) == province){
value(4) match {
case "中国电信" => num(0) = num(0) + 1
case "中国移动" => num(1) = num(1) + 1
case "中国联通" => num(2) = num(2) + 1
case "虚拟运营商" => null
}
}
}
num(3) = num(0) + num(1) + num(2)
println("号码总个数为" + num(3), "电信:" + num(0),"移动:"+ num(1), "联通"+ num(2))
}
def main(args: Array[String]): Unit = {
var province: String = " "
province = StdIn.readLine()
checkProvince(province)
}
}
二、实验总结及问题
1、学会使用什么做什么事情;
学会使用类与继承,模式匹配,映射等语法
2、在实验过程中遇到了什么问题?是如何解决的?
无
3、还有什么问题尚未解决?可能是什么原因导致的。
无