Ch03 数组相关操作 - 练习
1. 编写一段代码,将a设置为一个n个随机数的数组,要求随机数介于0(包含)和n(不包含)之间。
//import java.lang.Math
def
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.ArrayBuffer
object
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.ArrayBuffer
object
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.ArrayBuffer
import
java.util.TimeZone
object
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:
Adak
Anchorage
Anguilla
Antigua
...
*/
import
scala.collection.JavaConversions.asScalaBuffer
import
scala.collection.mutable.Buffer
import
java.awt.datatransfer.
_
import
java.util.TimeZone
object
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 ...
随机推荐
- slfj+logback
1.pom.xml <dependency> <groupId>org.projectlombok</groupId> <artifactId>lomb ...
- Vue:如何在vue-cli中创建并引入自定义组件
一.创建并引入一个组件 1.创建组件 vue-cli中的所有组件都是存放在components文件夹下面的,所以在components文件夹下面创建一个名为First.vue的自定义组件: <t ...
- ORACLE拼日期
Oracle数据库拼字符串是用"||"连接的.在开发中,经常会用到时间范围的查询 例如 startTime >='2017-05-22 00:00:00' and endT ...
- win10 Faster-RCNN训练自己数据集遇到的问题集锦 (转)
题注: 在win10下训练实在是有太多坑了,在此感谢网上的前辈和大神,虽然有的还会把你引向另一个坑~~. 最近,用faster rcnn跑一些自己的数据,数据集为某遥感图像数据集——RSOD,标注格式 ...
- class ObjectOutputStream也是过滤流,使节点流直接获得输出对象。
class ObjectOutputStream也是过滤流,使节点流直接获得输出对象. 最有用的方法:WriteObject(Object b) 用流传输对象称为对象的序列化,但并不使所有的对象都可以 ...
- CocoaPods更新过程中出现的坑及解决方法
如果CocoaPods很久没有更新,那么在search.install.update,都会强制升级他的repo,然后如果安装他正常的安装程序,从github上下的时候,你会发现,这个过程不管你FQ不F ...
- Zephyr学习(三)启动过程
一.写在前面 最近对zephyr这个系统很感兴趣,因此业余有时间的时候都在研究它的源码,而光看代码不去动手这不是我的风格,于是乎在网上淘了一块STM32F103C8T6的核心板和一块NRF52832的 ...
- 【netcore基础】ubuntu 16.04 搭建.net core 2.1 linux 运行环境 nginx反向代理 supervisor配置自启动
今天来整理下 netcore 在 linux(ubuntu) 上的运行环境搭建 对应版本 ubuntu 16.04 .net core 2.1 nginx version: nginx/1.10.3 ...
- 【Python】安装error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools"
pip install Scrapy --> error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft ...
- Linux ReviewBoard安装与配置
目录 0. 引言 1. 安装步骤 2. 配置站点 2.1 创建数据库 2.2 开始安装 2.3 修改文件访问权限 2.4 Web服务器配置 2.5 修改django相关配置 正文 回到顶部 0. 引言 ...