scala练习题300道

Posted 纪录大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scala练习题300道相关的知识,希望对你有一定的参考价值。

第一天:

1.请写出Scala程序编译执行流程

2.windowsscala程序运行需要的环境?

3.scala解释器的使用过程?

4.windows如何启动scala解释器?

5.如何退出解释器?

6.scala语言如何定义变量呢?

7.val和var定义变量的区别?

8.如何使用类型推断来定义变量?

9.如何进行惰性赋值?

10.惰性赋值的优点?

11.定义一个变量name的值为zhangsan?

12.请使用使用插值表达式定义变量a,表达式为3+2

13.请使用使用插值表达式定义变量b,表达式为5*6,最终结果为b=30W

14.请使用使用插值表达式定义变量c,表达式为6/2,最终结果为c=2秒

15.请使用使用插值表达式定义变量d,表达式为10-5,最终结果为d=5米

16.请使用三引号定义一段sql语句为 select  * from student where  age=20,变量为sql

17.scala的基本数据类型有哪些?

18.scala的运算符有哪几种?

19.请写出scala的算术运算符?

20.请写出scala的关系运算符?

21.请写出scala的逻辑运算符?

22.请写出scala的位运算符?

23.scala中的所有类的父类是哪个?

24.Any类的两个子类分别是什么?

25.哪一个类是所有类的子类?

26.在scala中的条件表达式和java中的一样吗?

27.在scala中的三元运算符和java的一样吗?

28.在scala中的块表达式有没有返回值,如果有,返回值是什么?

29.请说出下面定义的块表达式返回值为多少?

 val a = {

     | 1+1

 | 1+2

     | }

30.请使用to方法,for表达式打印50-60的数字

31.请使用for表达式遍历,打印50-60每个数字

32.使用for表达式打印出10以内能够整除2的数字

33.请使用for推导式生成一个新的集合,遍历1-10的集合,分别扩大5倍输出

34.请使用while循环打印出1-100的数字



第二天

1.定义一个方法,方法为一个变长参数,实现对数字10,20,30,40,50的累加

2.方法调用方式有哪几种?

3.请列举一个后缀调用法的示例?

4.请列举一个中缀调用法的示例?

5.花括号调用法的条件

6.请列举一个无括号调用法示例

7.在scala中函数是不是一个对象?

8.定义函数的语法是什么?

9.在定义函数的时候的关键字中能使用def吗

10.在定义函数的时候必须要指定返回值类型吗?

11.定义一个两个数值相减的函数,第一个参数减去第二个参数

12.在scala中方法和函数的区别?

13.怎么将方法转换为函数?

14.将方法a转换成函数b

15.scala中,有几种数组?

16.定长数组的特点是什么?

17.声明一个定长数组的语法

18.定义一个长度为10的字符串数组

19.给数组2个元素赋值为“scala”

20.定义一个包含以下元素的数组,10,java,hadoop,spark

21.定义一个方法ride1,两个整数类型参数,没有默认值,实现两个整数比较,谁大返回谁

22.定义一个方法sub1,两个整数类型参数,没有默认值,实现两个整数相减,返回结果

23.定义一个方法sub2,两个整数类型参数,没有默认值,实现两个整数相减,要数字大的减小的

24.定义一个方法ride2,两个整数类型参数,默认值为0,实现两个整数比较,谁小返回谁

25.定义一个方法sub3,两个整数类型参数,默认值为0,实现两个整数相减,返回结果

26.定义一个方法sub4,两个整数类型参数,默认值为0,实现两个整数相减,要数字大的减小的

 

for循环(1-20

1、请写出for循环,i 表示循环的变量,Range生成0-20的数字,请循环打印出0-19这些数字。

2、请写出for循环,i 表示循环的变量,Range生成0-20的数字,请循环打印出0-20内的奇数。

3、请写出for循环,i 表示循环的变量,Range生成0-20的数字,请循环打印出0-20内的偶数不包括20。

4、请写出for循环,i 表示循环的变量,Range生成0-20的数字,请循环打印出0-20这些数字。

5、请写出for循环,i 表示循环的变量,Range生成0-20的数字,请循环打印出0-20内的偶数包括20。

6、请写出for循环,i 表示循环的变量,until方式生成0-20的数字,请循环打印出0-19这些数字。

7、请写出for循环,i 表示循环的变量,until方式生成0-20的数字,请循环打印出0-20中的奇数。

8、请写出for循环,i 表示循环的变量,until方式生成0-20的数字,请循环打印出0-20内的偶数。

9、请使用嵌套for循环打印出3行3列的内容全为0的矩阵

10、请使用嵌套for循环打印出5行6列内容全为*的矩阵

11、请使用嵌套for循环打印出九九乘法表

12、请使用for循环,i 表示循环的变量,使用to 生成0-10的数字,在for表达式中使用守卫当i=5时不打印

13、请使用for循环,i 表示循环的变量,使用to 生成0-10的数字,在for表达式中使用守卫当i为偶数时打印

14、请使用for循环,i 表示循环的变量,使用to 生成0-10的数字,在for表达式中使用守卫当i为奇数时打印

15、请使用for循环,i 表示循环的变量,使用to 生成0-10的数字,使用yield把生成的数字变成之前的5倍

16、请使用for循环,i 表示循环的变量,使用to 生成0-10的数字,使用yield把生成的数字在之前的基础上减一

17、请使用for循环,i 表示循环的变量,使用to 生成0-10的数字,使用yield把生成的数字在之前的基础上加一

18、请使用for循环,i 表示循环的变量,使用to 生成0-10的数字,使用yield把生成的数字在之前的基础每个偶数变成之前的2倍

19、请使用for循环,i 表示循环的变量,使用to 生成0-10的数字,使用yield把生成的数字在之前的基础每个奇数变成之前的5倍

20、请使用while循环,i 表示循环的变量,打印出0-10的数字



第三天

 

set集合(1-10)

1、定义一个不可变set集合a,保存以下元素:10,20,30,10,50,40

2、获取a集合的大小

3、遍历a集合

4、a集合删除元素50

5、a集合拼接set集合Set(60,80,90)

6、a集合拼接列表List(100,300,200)

7、定义一个可变set集合b,初始元素为:5,6,7,8

8、b集合中使用+=添加元素9

9、b集合中删除元素5

10、b集合使用add添加元素10

Map映射(11-20)

11、构建一个映射map1,内容为"zhangsan" -> 20, "lisi" -> 18, "wangwu" -> "22"

12、构建一个映射map2,内容为"zhangsan" -> 20, "lisi" -> 18, "wangwu" -> "22"

13、构建一个空的映射map3,参数类型为Map[String, Int]

14、获取map2中的lisi的年龄

15、获取所有的map2中的key值

16、获取所有的map2中的value值

17、map2中新增一组数据:zhaoliu,25

18、map2中获取zhaoliu的年龄,如果zhaoliu不存在,则返回-1

19、map2中遍历打印所有的key和value

20、在map2中添加map1集合

方法(21-30

以下10道题目需要倒入两个包

import scala.io.StdIn

import scala.util.control.Breaks

21. 编写一个方法method1,输入分数之后能够打印出不及格(小于60分)、及格(60-80)、良好(80-90)、优秀(大于90)

22. 编写一个方法method2,输入名字,判断该名字是否为laowang,如果是返回true,如果不是返回false(不使用return)

23. 编写一个方法method3,要求能够输入一个大于0的数字参数,能够打印1到该数字范围内的所有数。(2种方式)

24. 编写一个方法method4,要求能够输入一个大于0的数字参数,能够打印1到该数字范围内的所有偶数。

25. 编写一个方法method5,要求能够输入一个大于0的数字参数,能够打印1到该数字范围内的所有奇数,并且该奇数不能被5整除。

26. 编写一个方法method6,要求可以输入任意多个参数(数字类型),将每个参数乘以100后放入数组并返回该数组。

如:2, 4, 6 返回 Array(200, 400, 600)

27. 编写一个方法method7,要求输入一个数字,如果数字大于150则抛出异常,并捕获该异常,捕获异常后打印The number is greater than 150。

提示:throw new Exception("The number is greater than 150")

28. 编写一个方法method8,要求传入两个参数,默认值分别为10,15,返回两个参数的乘积。

29. 定义一个名为method9的方法,有三个参数,前两个为数字类型,最后一个参数为f1函数(该函数类型参数接受两个数字类型参数,返回值也是数字类型),该method9方法返回值为数字类型。定义一个函数f1两个参数分别为x,y都为数字类型,执行返回结果是两个参数的和

30. 编写一个方法method10,要求有两个参数,两个参数都为大于0的数字,要求能够打印1到第一个参数数字范围内的所有数,在打印过程中遇到与第二个参数相乘大于200就停止。

数组(31-40

31、定义一个数组arr1内容为1-10

32、使用filter过滤器,过滤出来偶数

33、使用map把arr1数组中每一个元素都取出来放到一个全新数组

34、使用foreach打印出arr1数组中的元素

35、翻转数组arr1

36、修改数组arr1中下标为0的数据为100

37、删除arr1数组下标为0的数据

38、arr1数组从下标2开始,删除3个元素

39、插入数据到arr1数组, 第一个参数是开始的位置,插入50,66,77

40、对arr1数组进行降序排列

List列表(41-70

41、定义一个列表list1,内容为("a", "b" ,"c","d","e")

42、在list1列表开头添加元素t

43、在列表开头添加指定列表List("m","n")的元素

44、在列表list1后添加元素1

45、将列表的所有元素添加到 StringBuilder

46、将列表的所有元素添加到 StringBuilder并指定分隔符为","

47、获取列表索引为0的元素

48、检测列表中是否包含指定的元素a

49、向list1列表中追加数据"a"

50、去除list1列表的重复元素,并返回新列表

51、list1丢弃前3个元素,并返回新列表

52、list1丢弃最后2个元素,并返回新列表

53、检测列表list1是否以指定a结尾

54、判断是否是以指定a开始的列表list1

55、获取list1列表的第一个元素

56、在list1中从指定位置 0 开始查找元素d第一次出现的位置

57、list1返回所有元素,除了最后一个

58、检测列表list1是否为空

59、返回list1列表最后一个元素

60、返回list1所有元素,除了第一个

61、提取列表list1的前2个元素

62、提取列表list1的后2个元素

63、列表list1转换为数组

64、list1转换为 Seq

65、list1转换为 Set

66、list1列表转换为字符串

67、list1列表反转

68、list1列表排序

69、检测list1列表在指定位置1处是否包含指定元素a

70、列表list1转换为数组

元组(71-76

71 创建一个元组Y1,内部含有zhangsan   biejing   20  true  四个数据

72 获取元组Y1内的第二个元素(biejing)

现有数据如下图

姓名

zhangsan

lisi

wangwu

zhaoliu

年龄

20

30

40

50

性别

1

0

1

0

 

73 创建一个元组Y2,内部含有(zhangsan ,lisi,wangwu,zhaoliu),(20,30,40,50),(1,0,1,0)  3个数据(每个内部依然是元组)。

74 获取zhangsan,并输出

75 获取lisi 的年龄,并输出

76 获取wangwu的性别,并输出

Iterator迭代器(77-86)

77 定义一个迭代器iter1,数据为"Hadoop","Spark","Java"

78、遍历iter1,使用while循环并打印输出

79、定义一个迭代器iter2,数据为10,20,20,30,34,50,60

80、打印出iter2中的最大值

81、打印出iter2中的最小值

82、打印出iter2的长度

83、合并iter2和iter1两个迭代器

84、iter2丢弃前2个元素

85、检查iter2是否为空

86、iter2返回前 2个元素的新迭代器

87.变长数组的特点是什么?

88.创建没有初始元素的ArrayBuffer变长数组,语法结构是什么?

89.创建带有初始元素的ArrayBuffer的语法结构是什么?

90.在定义变长数组的时候需要导入哪个包?

91.定义变长数组的时候需要注意的点?

92.定义一个变长数组 a,数组类型为string,长度为0

93.向变长数组中添加元素spark

94.定义一个包含以下元素的变长数据,10,20,30,40,50

95.b数组删除元素50

96.在b数组后面追加一个数组Array(70)

97.使用for循环遍历b数组的内容并输出

98.使用for循环遍历b数组的索引下标,并打印元素

99.在scala中数组常用方法有哪些?

100.定义一个数组,包含以下几个元素(10,20,30,40),请计算该数组的和

101.定义一个数组,包含以下几个元素(130,120,310,140),请计算该数组的最大值

102.定义一个数组,包含以下几个元素(130,120,310,140),请计算该数组的最小值

103.定义一个数组,包含以下几个元素(130,120,310,140),请计算该数组的和

104.定义一个数组,包含以下几个元素(130,120,310,140),请实现降序排序




第四天


1、创建一个名字为Test01的Object,在Test01中

定义一个student1类

声明三个成员变量,String类型的name,Int 类型的age,String类型的address

2、创建一个名字为Test02的Object,在Test02中

定义一个student2类

声明三个成员变量,String类型的name,Int 类型的age,String类型的address

定义成员方法hello(s:String),方法中打印出s

3、创建一个名字为Test03的Object,在Test03中

定义一个student3类

声明三个成员变量,String类型的name,Int 类型的age,String类型的address

通过主构造器参数列表定义姓名和年龄字段为张无忌和25,并在主构造器方法中打印出“student3主构造器初始化”

4、创建一个名字为Test04的Object,在Test04中

定义一个student4类

声明三个成员变量,String类型的name,Int 类型的age,String类型的address

通过主构造器参数列表定义姓名和年龄字段为默认值,并在主构造器方法中打印出“student4主构造器初始化”

通过辅助构造器把姓名和年龄更新成赵敏和20,主方法调用辅助构造输出姓名和年龄

5、创建一个名字为Test05的Object,在Test05中

定义一个student5类

声明三个成员变量,String类型的name,Int 类型的age,String类型的address

通过主构造器参数列表定义姓名和年龄字段为默认值,并在主构造器方法中打印出“student5主构造器初始化”

构建两个辅助构造方法,第一个辅助构造方法的参数为name和age为默认值,输出打印“student5调用第一个辅助构造方法”

第二个辅助构造方法的参数为address赋值为北京,输出打印“student5调用第二个辅助构造方法”+address

6、创建一个名字为Test06的Object,在Test06中

声明一个 String 类型的name赋值为“大数据”

定义一个hello方法无参数,输出为“你好”+name

在此文件中创建一个student6单例,调用Test06的hello方法

7、创建一个名字为Test07的类,在Test07中

声明一个string类型的name私有变量,赋值为小明

定义一个私无参方法,名字为eat,输出为:name+"是吃货!"

在此文件中创建一个半生对象Test07,在半生对象中调用Test07类中的eat方法

8、创建一个名字为Test08的类,在Test08中

声明一个string类型的name变量,赋值为"继承Test08"

再此文件中创建一个cat类,继承Test08类,定义一个无参方法hello,输出name

9、创建一个名字为Test09的类,在Test09中

声明一个可变string类型的name变量,赋值为“单例继承Test08”

在此文件中创建一个dog单例继承Test08

在此文件中创建Main08单例,使用dog调用name

10、创建一个名字为Test10的Object

在此文件中创建一个animal类

animal类中声明一个可变字符串类型的name变量,赋值为动物

animal类中定义一个无参成员方法eat,输出为this.name+“吃水果”

在此文件中创建一个cat类

cat类中重写name变量,赋值为猫

cat类中重写方法eat,输出为this.name+“吃鱼”

在此文件中创建主方法,创建cat对象,调用eat方法


11、创建一个demo11的单例,在demo11中创建一个样例类名字为student11,成员变量为name:String, age:Int

创建主方法实例化student,并传参数(“xiaoming”,20),打印输出student1对象到控制台

12、创建一个demo12的单例,在demo12中创建一个样例类名字为student12,成员变量为name:String, age:Int

创建主方法实例化student12,并传参数(“xiaoming”,20),修改student2对象的age=25,打印输出student2对象到控制台

13、创建一个demo13的单例,在demo13中创建一个样例类名字为student13,成员变量为name:String, age:Int

创建主方法,使用apply方法实例化student3,并传参数(“xiaoming”,18),使用toString输出对象到控制台

14、创建一个demo14的单例,在demo14中创建一个样例类名字为student14,成员变量为name:String, age:Int

创建主方法,并创建a和b两个样例对象,参数都是(“xiaoming”,18),分别使用==和equals两种方式判断a和b对象是否相等

15、创建一个demo15的单例,在demo15中创建一个样例类名字为student15,成员变量为name:String, age:Int

创建主方法,创建三个样例对象a(“xiaoming”,18),b(“xiaoming”,19),c(“xiaoming”,20),分别输出a,b,c的哈希值到控制台

16、创建一个demo16的单例,在demo16中创建一个样例类名字为student16,成员变量为name:String, age:Int

创建主方法, 创建一个实例对象a(“xiaoming”,18),使用copy方法创建另一个对象b(“xiaoli”,20),并输出对象b到控制台

17、创建一个demo17的单例,在demo17中定义一个性别Sex特质,定义两个样例对象并继承了Sex特质,分别为Male 和Female

创建一个样例类名字为student17,成员变量为name:String, sex:Sex,创建主方法, 创建一个实例对象a(“xiaoming”,Male),打印输出对象a

18、创建一个demo18的单例,在demo18中创建一个样例类名字为student8,成员变量为name:String, age:Int

创建主方法,并创建a,b,c三个对象,参数分别为("zhangsan",10)("lisi",20)("wangwu",30),把这三个对象添加到List列表中

循环遍历列表,使用match case进行匹配,匹配到的对象如果是student8("zhangsan",10),打印输出“zhangsan”,

匹配到的对象如果是student8("lisi", 20),打印输出“lisi”,匹配到的对象如果是其他的,打印输出“没有匹配上”

19、创建一个demo19的单例,在demo19中请使用 StdIn.readLine()方法,在控制台输入数据,使用match case进行匹配,

输入1,输出为孙悟空

输入2,输出为猪八戒

输入3,输出为沙和尚

输入0,输出为唐僧

输入其他的,输出为未匹配

20、创建一个demo20的单例,在demo20中使用模式匹配数组

Array(10,x,y,z) ,输出为以10开头,后续的三个元素不固定

Array(6)   输出为 只匹配一个6元素的元素

Array(scala, ...)  输出为可以任意数量,但是以0开头的数组

其他的,输出为没有匹配上

21、创建一个demo21的单例,在demo21中使用模式匹配列表

定义一个列表为List(1,2,3),分别匹配输出为只有1的列表,1开头的列表,只有两个元素${x}, ${y}的列表,未匹配到

22、创建一个demo22的单例,在demo22中

22.1、定义一个值为5的Option实例a

val a : Option[Int] = Some(5)

22.2、定义一个无值的Option实例b

 val b : Option[Int] = None

23、创建一个demo23的单例,在demo23中

23.1、定义一个两个数相除的方法,使用Option类型来封装结果

23.2、然后使用模式匹配来打印结果

23.3、o不是除零,打印结果

23.4、o除零打印异常错误

24、创建一个demo24的单例,在demo24中使用findAllMatchIn进行匹配

定义一个正则表达式,来匹配邮箱是否合法

定义一个合法邮箱测试:666888@163.com

定义一个不合法的邮箱测试:666888@.com

25、创建一个demo25的单例,在demo25中使用try..catch来捕获除零异常

定义一个变量为 a= 100/0,使用try catch进行捕获异常,并打印输出异常信息

26、创建一个demo26的单例,在demo26中

定义一个List(("xiaoming1","男",18),("xiaohua1","女",20),("xiaomeng","男",18),

      ("xiaoli1","女",19),("xiaoming2","男",22),("xiaoli2","女",17),("xiaoming4","男",28))

26.1、把每个人的年龄改成之前的3倍

26.2、把每个人的年龄改成之前的2倍,之后再这个基础上进行减一

26.3、年龄小于20的过滤掉

26.4、性别是女的过滤掉

26.5、计算一下所有人的总年龄

26.7、请按照年龄从小到大排序

26.8、请按照年龄从大到小排序

26.9、把每个人的姓名性别年龄合成一个输出

26.10、把年龄为奇数和偶数的人分开

27、创建一个demo27的单例,在demo27中

 创建List("hello world", "alibaba hello", "hello hello hello")

 请把每个元素按照空格进行切分,并打印输出

28、创建一个demo28的单例,在demo28中

创建一个List中含有(1,2,3,4,5,6,7,8,9,10)

list0中的每一个元素乘以10后生成一个新的集合

list0中的偶数取出来生成一个新的集合list1

list0中的奇数取出来生成一个新的集合list2

reduce 计算list1所有数的和

reduce 计算list2所有数数组的乘积

list1的数据降序排列

list2中的数据进行翻转

创建一个list中包含多个list多个list压平, 也就是抽取出来

29、创建一个demo29的单例,在demo29中

var A0 = Array(1, 4, 10, 3, 6)

var A1 = Array(6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1, 2, 3, 4, 5)

var A2 = Array("zhangsan*lisi*wnagwu", "hadoop*hive*hbase", "biejing*hanghai*nanjing")

A1中的数据进行升序排序

遍历A0中的数据,将返回的结果每个都*2

找出A1中除余3等于1的数返回

A2中的数据拆分之后重新返回一个新的Array

A1中的数字累加计算结果

30、创建一个demo30的单例,在demo30中

var arr0=array(11,5,7,2,1,2,3,4,5,6)

var arr1=array("1,2,3,4","6,7,8,9","1,2,3,4")

1.现有一个数组arr0,请将每个元素乘以10,只保留大于40的数并打印。

2.求出arr0中每个元素10倍的乘积

3.将arr1中每个字符串用","切分,组成一个新的集合,并且求出数组的长度

4.将arr0进行奇数偶数分区,基数分区进行正序排序,偶数部分倒序排序  

31、创建一个demo31的单例,在demo31中

var A1 = Array(6, 7, 8, 9, 10, 1, 2, 3, 4, 5)

var A2 = Array("11,22,33", "44,55,66", "77,88,99")

1.遍历输出A1,并将每个数*2且输出

2.A1升序

3.A1降序

4.A1奇数偶数分开

5.将A2中每个字符串用","切分,组成一个新的集合,并且求出数组的长度

6.将A2中每个字符串用","切分,组成一个新的集合,并且将每个数除11把大于5的数输出

32、创建一个demo32的单例,在demo32中

创建一个val lst0 = List(1,7,9,8,0,3,5,4,6,2)

lst0倒序排序

lst0中的偶数取出来生成一个新的集合lst1

lst1反转

lst1的和

var A1 = Array("1,2,3", "4,5,6", "7,8,9")

A1中字符串用“,”切分,生成新的集合,并将奇数偶数分开打印

33、创建一个demo33的单例,在demo33中

1.创建一个名为list的List(6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1, 2, 3, 4, 5)列表

2.使用map方法和foreache方法list遍历

3.将集合内数据*10产生一个新的列表L2

4.将L2中的所有偶数取出来产生一个新的列表L3

5.计算L3数据的总和

6.将L3倒序排序

7.将L3反转

8.创建新list1数据为 List(Array(11,22,33), Array(44,55,66))

9.使用flatten将list列表合并成一个新的列表

10.将list奇数偶数分开打印

34、创建一个demo34的单例,在demo34中

var a0 = Array(1, 2, 3, 4, 5)

var a1 = Array(6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1, 2, 3, 4, 5)

1.现有一个数组a0,请将每个元素*10,只保留小于10的数并打印。

2.求出a0中每个元素10倍的乘积并降序输出

3.求a1中大于10的数据的总和

4.将a0进行奇数偶数分区,基数分区进行正序排序,偶数部分倒序排序


第五天

1、创建一个名字为Test01的Object,在Test01中声明一个Char类型的变量charStr,进行模式匹配,

charStr为 '+',输出“匹配上了加号”

charStr为 '-',输出“匹配上了减号”

charStr为 '*',输出“匹配上了乘号”

charStr为 '/',输出“匹配上了除号”

什么都没匹配上输出“都没有匹配上,我是默认值”

2、创建一个名字为Test02的Object,在Test02中创建一个Array,包含三个元素,”hadoop”,“zookeeper”,”spark”,使用Random类中的方法对Array进行随机抽取,赋值为name

当name为 'hadooop',输出“大数据分布式存储框架...”

当name为 'zookeeper',输出“大数据分布式协调服务框架...”

当name为 'spark',输出“大数据分布式内存计算框架...”

什么都没匹配上输出“我不知道它是什么...”

3、创建一个名字为Test03的Object,在Test03中声明两个变量,一个是String类型的who=”孔明”,另一个是Int类型的sign=0,进行匹配

当who为“+” ,sign=1

当who为“-” ,sign=2

当who为“孔明” ,sign=3

什么都没匹配上输出,sign=4

最后打印输出who和sign

4、创建一个名字为Test04的Object,在Test04中定义一个有参方法,参数为Int类型的x,当输入的X为负数时,输出他的正数,当输入的x为正数时,不改变输出,输入其他的类型时,输出“类型不合法”

5、创建一个名字为Test05的Object,在Test05中定义一个有参方法describe(x:Any),对输入的参数x进行匹配

当输入数值时,输出参数为数值类型

当输入”hello”时,输出“hello string”

当输入true时,输出“Boolean类型”

当输入其他时,输出“识别不了...”

6、创建一个名字为Test06的Object,在Test06中定义一个有参方法methed1(x:Any),对输入的参数x的类型进行匹配

当输入的x为Int类型时,输出“Int”

当输入的x为String类型时,输出“String”

当输入的x为Lint[_]类型时,输出“List”

当输入的x为Array[Int]类型时,输出“Array[Int]”

当输入的x为其他类型时,输出“something else”

7、创建一个名字为Test07的Object,在Test07中定义Array((0, 1), (1, 0), (1, 1), (1, 0, 2)),遍历数组,对结果进行匹配,

当第一个元素是0的元祖时,输出“0...”

当匹配后一个元素是0的双元祖时,输出“...0”

当匹配非0的双元祖时,输出“两个元素的值”

当输出其他的时候,输出“something else”

8、创建一个名字为Test08的Object,在Test08中定义一个样例类User(name:String,age:Int),创建一个姓名为“zhangsan”,age为20的user对象,对user进行匹配,如果匹配上zhangsan,20岁的对象,返回yes,否则返回no

9、创建一个名字为Test09的Object,在Test09中for表达式中的模式匹配

定义一个Map("A" -> 1, "B" -> 0, "C" -> 3),使用for循环进行遍历,首先直接将map中的k-v遍历出来;再次进行遍历,value=0的 k-v 过滤输出,第三种遍历方式是 如果v不是0过滤的条件

10、使用scala统计每个字母出现的次数“AAAABBBBCCCCDDDQQQMMFFFFEEE”

11、定义方法:接收一个整数数组,将数组中的奇数全部替换为1,打印替换后的结果

12、定义方法:判断数组中的值是否全为偶数,返回判断结果

13、定义方法:接收一个整数数组,一个整数 num,方法中判断num如果是0,则找出数组中的最小值并返回,如果num是1,则找出数组中的最大值并返回

14、定义方法:接收一个整数数组,方法中计算数组所有元素和的平均值

15、定义方法:接收一个整数数组、索引A、索引B,如果索引A、B上的元素存在则将这2个索引上的值进行对调。

否则打印“索引越界异常:给出的索引不在数组的索引范围内”

16、定义方法:接收一个整数数组,方法中将数组中的最大值与数组的最后一个元素对调位置,将数组中最小值与第一个元素对调位置,返回调换后的数组。

举例:{2,5,3,9,2} 调换后的结果 {2,5,3,2,9}

      {5,6,8,1,3} 调换后的结果 {1,6,3,5,8}



第六天

1、顾客到超市购物,购买牙膏 2 盒,面巾纸 4 盒。其中牙膏的价格是 10.9 元,面巾纸的价格是 5.8 元,求商品总价格。实现代码如下:

首先定义了一个 float 类型的变量存储牙膏的价格

然后定义了一个 double 类型的变量存储面巾纸的价格,

再定义两个 int 类型的变量存储物品的数量,

最后进行了乘运算以及和运算之后,将结果储存在一个 double 类型的变量中进行输出。

2、顾客到超市购物,购买牙膏 2 盒,面巾纸 4 盒。其中牙膏的价格是 10.9 元,面巾纸的价格是 5.8 元,求商品总价格,在计算总价时采用 int 类型的数据进行存储

3、编写程序1+3+5+7+...+99的和值

4、在屏幕上打印出 *,如,若 n=5,则图案如下:

5、输入3个数a、b、c,按照大小顺序输出,最大的与最小的元素交换输出

6、判断用户名是否是合格的:

键盘录入一个用户名,

要求用户名长度为6-11位。

如果符合要求,打印“用户名XXX可以注册”;

否则打印“用户名XXX是非法的!”

7、随机三个数字1-6,如果三个数相同,则打印“豹子”;否则进入比较大小的环节,比大小规则:如果三个数累加和在9点以下,则展示“小”,否则展示“大”。

8、输出4位数中能被6整除不能被12整除的数

9、打印出100-999(包含100 和999)之间的所有的 "水仙花数",所谓 "  水仙花数 "是指一个三位数,其各位数字立方和等于该数本身:

153是一个水仙花数,153=1的三次方+5的三次方+3的三次方

个位  3

十位  5

百位  1

3*3*3+5*5*5+1*1*1=153

10、键盘录入一个整数,判断它能否被3,5,7整除,并输出以下信息

(1)能同时被3,5,7整除

(2)能被其中两个数整除(要指出那两个数)

(3)只能被其中一个数整除(指出那一个)

(4)不能被3,5,7任一个整除

11、键盘录入两个整数a和b,若a+b大于100,则输出a+b大于100的部分,否则输出两数之和

12、键盘 录入三角形的三边,根据输入的三角形的三边判断是否能组成三角形,如果可以进一步 判断三角形的类型

等边三角形(三边相等) 等腰三角形(两边相等)  直角三角形(a平方+b平方=c平方)  其他三角形(不满足上面的)

13、键盘录入一个三位数,按逆序打印出各位数字。例如原数字为321,应输出123。

14、 求1~100以内(包含1和100)能同时被3,5整除的数的和,并将求出的和打印到控制台上.

15、1.打印一个 5行4列的矩形

2. 键盘录入 矩形的行数和列数,完成矩形的打印

16、在main方法中分别打印下列四个图形



17、定义方法,接收一个字符串,判断字符串是否对称,返回布尔值的判断结果

举例:”abba”  “abtba” “123321” “12a21” 都是对称字符串。

18、有1分钱,2分钱,5分钱的硬币,要组合出2角钱来,有哪些组合方式?

19、编程程序打印空心菱形

 

20、我国古代数学家张邱建在《算经》中出了一道“百钱买百鸡”的问题,题意是这样的:5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买3只雏鸡。现在用100文钱买100只鸡,那么各有公鸡、母鸡、雏鸡多少只?请用代码实现

21、 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,编程实现获取它在 第10次落地时,共经过多少米?第10次反弹多高?

22、一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?

23、一小和尚挑水,要把水缸装满,而且每次只能挑5升水,水缸能容纳80升水。问:小和尚要挑几次才能把水缸挑满?

24、 考试成绩分等级,请根据键盘输入的成绩,输出对应的成绩等级,要求:

1.键盘录入一个正整数;

2如果录入的整数在0~100(包含0和100)之间可以一直录入并根据键盘录入的成绩,输出对应的成绩等级; ,如果录入的整数不在0~100(包含0和100)之间就结束键盘录入,并提示成绩录入结束

成绩等级提示如下:

90~100A等。

80~89B等。

70~79C等。

60~69D等。

60~0E等。

小于0或者大于100  成绩录入结束

 

25、 定义一个用于存放班级分数的数组int[] score = {80,90,85,90,78,88,89,93,98,75};

     求出班级不及格人数(分数低于60分的就是不及格)  

     求出班级的平均分

     求出班级的总分数

26、用指定整数替换指定数组中的元素值,要求:

定义main方法,方法内完成:

1.定义一个int数组arr,数组arr的值分别是1、2、3、4、5、6、7、8、9

2.获取1个键盘录入的整数intNum

3.如果整数intNum为偶数,则用intNum替换数组arr中所有的偶数下标的元素值,

    如果整数intNum为奇数,则用intNum替换数组arr中所有的奇数下标的元素值

4.在控制台上打印修改后的数组中的所有的元素值

27、1. void drawMoney(double money) 取钱方法 ,完成功能银行卡调用取钱方法,余额减少取出的钱数,,打印取出多少钱,还剩多少钱。

如果,取出的钱大于余额,则抛出自定义编译期异常BankException,异常信息:“大哥 没那么钱,咱就别装了。”

2. double saveMoney(double money)存钱方法, 完成功能调用存钱的方法,余额增加对应的钱数,将余额最新的钱数返回回去。 

  如果,存入的钱大于5000元,则抛出自定义编译期异常BankException,异常信息:“大哥能不能少存点,这一下我算不过来。”

创建main方法,测试代码,捕获异常。

28、现有一个Map集合,

map.put("c001",1);

map.put("c002",2);

map.put("c003",4);

map.put("c004",2);

map.put("c005",3);

求出map中value的最大值,和相应的key

29、模拟注册登录程序。要求如下:1.控制台打印:1.注册 2.登录  3.退出2.输入1 进入注册, 提示输入 用户名, 输入 密码 ,将用户名密码 写入user.txt中,格式 用户名=密码 一个占一行3.输入2 进入登录, 提示输入用户名,输入密码,使用输入流读取user.txt,解析所有的用户名和密码,存放入map集合中,用户名为key,密码为value,如何用户名不正确,提示用户名不存在,程序结束,如果密码不正确,提示密码错误 程序结束 4.输入3 退出程序

30、1.定义List集合,存入如下字符串:"传智播客" ,"黑马程序员" ,"天天" , "向上" ,"好好学习"

2.遍历集合,将长度小于4的元素左边填充字符串0,并在控制台按以下格式打印输出

修改后集合中所有元素,输出结果格式如下:

[传智播客,  黑马程序员, 0天天, 0向上,好好学习]







以上是关于scala练习题300道的主要内容,如果未能解决你的问题,请参考以下文章

scala习题精选100道

随机出现300道四则运算数学题

分别用SQL和Spark(Scala)解决50道SQL题

四则运算作业

50道sql练习题和答案

快学Scala课后习题答案