Ch03 数组相关操作 - 练习
1. 编写一段代码,将a设置为一个n个随机数的数组,要求随机数介于0(包含)和n(不包含)之间。
//import java.lang.Mathdef getArray(n:Int)={ val nums = new Array[Int](n) for(i <- 0 until nums.length){ nums(i) = (Math.random() * n).toInt } nums} getArray(10)//res18: Array[Int] = Array(5, 1, 6, 9, 0, 9, 6, 6, 8, 1)object App{ def main(args: Array[String]){ makeArr(10).foreach(println) } def makeArr(n:Int): Array[Int]={ val a = new Array[Int](n) val rand = new scala.util.Random() for(i <- a) yield rand.nextInt(n) }}object App{ def main(args: Array[String]){ val a = Array(1,2,3,4,5) exchangeArr(a).foreach(println) } def exchangeArr(a:Array[Int]):Array[Int]={ for(i <- 0 until a.length){ if(i % 2 == 0 && i != a.length -1){ val t = a(i) a(i) = a(i+1) a(i+1) = t } } a }}object App{ def main(args: Array[String]){ val a = Array(1,2,3,4,5) val b = revertYield(a) a.foreach(println) println b.foreach(println) } def revertYield(arr:Array[Int])={ for(i <- 0 until arr.length) yield { if(i % 2 == 0 && i != arr.length -1){ arr(i+1) }else if(i % 2 == 1 && i != arr.length -1){ arr(i-1) }else if(i % 2 == 0 && i == arr.length -1){ arr(i) }else{ arr(i-1) } } }}object App{ def main(args: Array[String]){ val a = Array(1,2,-3,-4,5,0) sortArr(a).foreach(println) } def sortArr(arr:Array[Int])={ val positiveIndexes = for(i <- 0 until arr.length if arr(i) >0 ) yield i val nonpositiveIndexes = for(i <- 0 until arr.length if arr(i) <= 0) yield i val newArr = new Array[Int](arr.length) for(i <- 0 until arr.length){ if(i < positiveIndexes.length) newArr(i) = arr(positiveIndexes(i)) else newArr(i) = arr(nonpositiveIndexes(i - positiveIndexes.length)) } newArr }}
object App{ def main(args: Array[String]){ val a = Array(1,2.0,-3,-4,5,0) println(average(a).toString) } def average(arr:Array[Double])={ arr.sum/arr.length }}//result: 0.16666666666666666 |
object App{ def main(args: Array[String]){ val a = Array(1,2,-3,-4,5) println(a.mkString("[",",","]")) println(reverseArray(a).mkString("[",",","]")) } def reverseArray(arr:Array[Int])={ for(i <- 0 until arr.length/2){ val t = arr(arr.length-1-i) arr(arr.length-1-i) = arr(i) arr(i) = t } arr }}/*result: [1,2,-3,-4,5][5,-4,-3,2,1]*/import scala.collection.mutable.ArrayBufferobject App{ def main(args: Array[String]){ val a = ArrayBuffer(1,2,-3,-4,5) println(a.mkString("[",",","]")) println(reverseArray(a).mkString("[",",","]")) } def reverseArray(arr:ArrayBuffer[Int])={ for(i <- 0 until arr.length/2){ val t = arr(arr.length-1-i) arr(arr.length-1-i) = arr(i) arr(i) = t } arr }}/*result: [1,2,-3,-4,5][5,-4,-3,2,1]*/object App{ def main(args: Array[String]){ val a = Array(6,2,2,6,7,5,2) println(a.mkString("[",",","]")) val b = a.distinct println(b.mkString("[",",","]")) }}/*result: [6,2,2,6,7,5,2][6,2,7,5]*/import scala.collection.mutable.ArrayBufferobject App{ def main(args: Array[String]){ var a = ArrayBuffer(1,-2,3,-4,5,-6,7) println(a.mkString("[",",","]")) var begin = System.currentTimeMillis() var b = ridAllNegativeButFirstA(a) var end = System.currentTimeMillis() println(end-begin) println(b.mkString("[",",","]")) println a = ArrayBuffer(1,-2,3,-4,5,-6,7) println(a.mkString("[",",","]")) begin = System.currentTimeMillis() b = ridAllNegativeButFirstB(a) end = System.currentTimeMillis() println(end-begin) println(b.mkString("[",",","]")) println a = ArrayBuffer(1,-2,3,-4,5,-6,7) println(a.mkString("[",",","]")) begin = System.currentTimeMillis() b = ridAllNegativeButFirstC(a) end = System.currentTimeMillis() println(end-begin) println(b.mkString("[",",","]")) } def ridAllNegativeButFirstA(a:ArrayBuffer[Int])={ var first = true var n = a.length var i = 0 while(i < n){ if(a(i) >= 0) i += 1 else{ if(first) { first = false; i += 1 } else { a.remove(i); n -= 1 } } } a } def ridAllNegativeButFirstB(a:ArrayBuffer[Int])={ var first = true val indexes = for(i <- 0 until a.length if first || a(i) >= 0) yield { if (a(i) < 0) first = false; i } for(j <- 0 until indexes.length) a(j) = a(indexes(j)) a.trimEnd(a.length - indexes.length) a } def ridAllNegativeButFirstC(a:ArrayBuffer[Int])={ val indexes = for(i <- 0 until a.length if a(i) < 0) yield i val seq = indexes.reverse.dropRight(1) for(i <- 0 until seq.length) a.remove(i) a } }/*result: [1,-2,3,-4,5,-6,7]5[1,-2,3,5,7][1,-2,3,-4,5,-6,7]4[1,-2,3,5,7][1,-2,3,-4,5,-6,7]3[-2,-4,5,-6,7]*/import scala.collection.mutable.ArrayBufferimport java.util.TimeZoneobject App{ def main(args: Array[String]){ val a = TimeZone.getAvailableIDs() val b = a.filter(_.startsWith("America/")) for(i <- 0 until b.length) b(i) = b(i).replace("America/","") b.foreach(println) }}/*result: AdakAnchorageAnguillaAntigua...*/ import scala.collection.JavaConversions.asScalaBufferimport scala.collection.mutable.Bufferimport java.awt.datatransfer._import java.util.TimeZoneobject App{ def main(args: Array[String]){ val flavors = SystemFlavorMap.getDefaultFlavorMap().asInstanceOf[SystemFlavorMap] val buffer = flavors.getNativesForFlavor(DataFlavor.imageFlavor) println(buffer) }}/*result[PNG, JFIF, DIB, ENHMETAFILE, METAFILEPICT]*/Ch03 数组相关操作 - 练习的更多相关文章
- Scala学习(三)----数组相关操作
数组相关操作 摘要: 本篇主要学习如何在Scala中操作数组.Java和C++程序员通常会选用数组或近似的结构(比如数组列表或向量)来收集一组元素.在Scala中,我们的选择更多,不过现在我们先假定不 ...
- 快学Scala习题解答—第三章 数组相关操作
3 数组相关操作 3.1 编写一段代码.将a设置为一个n个随机整数的数组,要求随机数介于0(包括)和n(不包括)之间 random和yield的使用 import scala.math.rando ...
- scala 入门(2)--数组相关操作
scala 无论从数组的定义还是操作方面来说都跟java非常相似,但又有其独特的强大之处… 1. 定长数组 对于长度不变的数组,可以用scala中的Array. //scala 里使用new实例化对象 ...
- 快学Scala-第三章 数组相关操作
知识点: 1.定长数组 Array val nums = new Array[Int](10) //10个整数的数组,所有元素初始化为0 val a = new Array[String](10) / ...
- 【php】php数组相关操作函数片段
下面这些都是我在工作中用到的函数,现在整理下. 判断是否是一个数组 function _is_array($value){ if (is_array($value)) { return true; } ...
- linux awk数组相关操作介绍
用awk进行文本处理,少不了就是它的数组处理.那么awk数组有那些特点,一般常见运算又会怎么样呢.我们先看下以下的一些介绍,结合样例我们会解说下它的不同之处.在 awk 中数组叫做关联数组(assoc ...
- Shell数组相关操作
参考:http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html 创建数组 a=( ) 获得数组长度 ${#a[@]} #${#变量} ...
- Javascript 数组相关操作
数组排序问题: sort() arr.sort() 可以直接进行排序,但是排序的方式是按unicode 顺序而来,比如1,1000,200,这个顺序不是我们想要的结果: 所以有了另一种方法,针对num ...
- Scala学习三——数组相关操作
一.若长度固定则使用Array,若长度可能有变化则使用ArrayBuffer 固定长度数组: 如val nums=new Array[Int](10) //10个整型数组,所有元素初始化为0; val ...
随机推荐
- iOS 开发网络篇—监测网络状态
iOS开发网络篇—监测网络状态 一.说明 在网络应用中,需要对用户设备的网络状态进行实时监控,有两个目的: (1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能) (2)根据用户的网络状态进行 ...
- 2.4G还是5G?带你选择最正确的路由器
智能设备井喷的时代,无线路由器成为家庭中最重要的电器设备.稳定性.连接速度.信号强弱都是无线路由使用体验的重要组成部分.究竟如何选购与配置路由器才能得到最好的用户体验呢? 当你在选购无线路由器的时候是 ...
- 【iCore4 双核心板_uC/OS-II】例程四:软件定时器
一.实验说明: 一些应用程序执行它们的任务时需要延迟一段特定的时间,因此uC/OS-II为我们提供了一些相应的 延时函数,本例程我们使用软件定时器定时500ms点亮相应的LED实现三色LED循环闪烁. ...
- git常见用法介绍
1. git help:帮助 git help xxx git xxx --help 2. git init:初始化 git init 3. git config:配置 常见用法 git config ...
- 解决vscode无法提示golang的问题
https://github.com/Microsoft/vscode-go/wiki/Go-with-VS-Code-FAQ-and-Troubleshooting Q: Auto-completi ...
- Linux下Qt Creator编辑器无法输入中文解决
Ubuntu安装了搜狗输入法,在浏览器中可以使用,但是在Qt Creator中却无法输入中文. 解决办法: 执行sudo apt-get install fcitx-libs-qt5 该命令将库文件l ...
- 浅谈前端JavaScript编程风格
前言 多家公司和组织已经公开了它们的风格规范,详细可參阅jscs.info,以下的内容主要參考了Airbnb的JavaScript风格规范.当然还有google的编程建议等编程风格 本章探讨怎样使用E ...
- tiny png
golang package main import ( "encoding/base64" "fmt" "os" "net/ht ...
- 转 .NET4.5之初识async与await
来自:http://www.cnblogs.com/lekko/archive/2013/03/05/2944282.html 本人是从.NET4.0刚出的时候接触的.NET环境,所以学的东西就是4. ...
- springMVC01,使用xml
unit03_01 unit03_02 springmvc流程图 案例:hello示例 /hello.do --> springmvc --> /WEB-INF/hello.jsp /he ...