scala小练习

1 100 以内的数求和,求出当和第一次大于 20 的当前数。

思路:在循环相加时加入if判断,不符合条件就直接跳出循环,带出相对应的数字。

object Work02 {
  def main(args: Array[String]): Unit = {
    var num=0
    var sum=0
    Breaks.breakable(
      for(i:Int <- 0 to 100){
        if(sum>20){
          num=i-1
          Breaks.break()
        }
        sum+=i
      }
    )
    println(num)
  }
}

编写一个包含 100 个随机数字(Int 型)的 List,通过 map 将此 List 中所有成员乘以 2,接下来用filter 把所有的偶数找出来。提示:scala.util.Random 可生成随机数。

思路:先创随机数的num,在创建List集合并用fill直接添加随机数,最后通过map处理。

object Work02 extends App {
  var num=Random
  var I=List.fill(100)(num.nextInt(101)).map(_*2).filter(_%2==0)
  println(I)
}

用scala输出0-6的所有加法算式

思路:定义两个数直接遍历6次,没便利一次加一次和减一次

object Work02 {
  def main(args: Array[String]): Unit = {
    var num1=0
    var num2=6
    while (num1<=6 && num2>0){
      print(num1+"+"+num2+"=")
      println(num1+num2)
      num1+=1
      num2-=1
    }
  }
}

请将下列同学分为2组,依次每3人一组,组内按名排序

案例:“Jason,Vince,Dwan,Lynn,Stephon”
思路:先用split切分然后用toList转换成集合,最后通过迭代器grouped分成每三个一组

object Work02 {
  def main(args: Array[String]): Unit = {
    var str:String="Jason,Vince,Dwan,Lynn,Stephon"
    var list=str.split(",").toList
    val iterator = list grouped 3
    println(iterator.next())
    println(iterator.next())
  }
}

需求说明

现在Book拥有电子版本,可以在多终端上播放
定义Ebook特质,包含play()方法
使Book混入Ebook特质,实现play()方法

trait Ebook{
  def play(): Unit ={
    println("打开电子书")
  }
}

class Book(t:String,a:String) {
  var title:String=t
  var author:String=a
}

object Book{

  def apply(t: String, a: String): Book = new Book(t, a)

  def main(args: Array[String]): Unit = {
    var book:Book with Ebook=new Book("嫌疑人的x献身","东野圭吾") with Ebook
    book.play()
  }
}

需求说明

假设类Book有属性title和author(多个),books是Book的列表
实现Book类,同时使用主构造器与辅助构造器
实现Book的伴生对象,使用伴生对象创建Book实例
创建books,使用List[Book]初始化5个以上Book实例
找出books中书名包含“xxx”的书,并打印书名
找出books中作者名以“xxx”打头的书,并打印书名

class Book{
  var title:String=_
  var author:String=_
  
  def this(title:String,author:String){
    this()
    this.title=title
    this.author=author
  }
}

object Book{

  def apply(title: String, author: String): Book = new Book(title, author)

  def main(args: Array[String]): Unit = {
    var book1:Book=Book("嫌疑人的x献身","东野圭吾")
    var book2:Book=Book("x方程组","数学老师出的")
    var book3:Book=Book("悬疑小说白夜行","东野圭吾")
    var book4:Book=Book("悬疑小说假面山庄","东野圭吾")
    var book5:Book=Book("三国演绎","罗贯中")
    var books:List[Book]=List(book1,book2,book3,book4,book5)
    books.filter(x => x.title.contains('x')).foreach(x => println(x.title))
    books.filter(x => x.title.startsWith("悬疑小说")).foreach(x => println(x.title))
  }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值