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 ...
随机推荐
- 小白都能看明白的VLAN原理解释
为什么需要VLAN 1. 什么是VLAN? VLAN(Virtual LAN),翻译成中文是“虚拟局域网”.LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络.VLAN ...
- linux shell命令之wc/split及特殊字符
[时间:2018-07] [状态:Open] [关键词:linux, wc, split, 通配符,转义符,linux命令] 0 引言 整理这篇文章的目的不是为了什么学习,仅仅是为了强化下记忆,以便下 ...
- 机器学习&深度学习基础(机器学习基础的算法概述及代码)
参考:机器学习&深度学习算法及代码实现 Python3机器学习 传统机器学习算法 决策树.K邻近算法.支持向量机.朴素贝叶斯.神经网络.Logistic回归算法,聚类等. 一.机器学习算法及代 ...
- c++中常用的泛型算法
std中定义了很好几种顺序容器,它们自身也提供了一些操作,但是还有很多算法,容器本身没有提供. 而在algorithm头文件中,提供了许多算法,适用了大多数顺序容器.与c++11相比,很多函数在 c+ ...
- 新内容转入github
所有新内容已经转入 https://github.com/honggzb/Study-General https://github.com/honggzb/Study2016
- springboot-custom starter
Spring Boot由众多Starter组成,随着版本的推移Starter家族成员也与日俱增.在传统Maven项目中通常将一些层.组件拆分为模块来管理, 以便相互依赖复用,在Spring Boot项 ...
- MySQL 5.7.14安装说明,解决服务无法启动
http://jingyan.baidu.com/article/f54ae2fc0affca1e92b84999.html http://www.myexception.cn/mysql/51431 ...
- 多级分类标签{dede:channelartlist}实现当前栏目颜色高亮显示
我们知道,如果要在网站上多级分类显示的话,可以用下面的标签实现: {dede:channelartlist typeid='4' cacheid='channelsonlist'} < ...
- UCloud 机房的网络搭建(计蒜客初赛第五场)
UCloud 刚刚建立一个新机房,近日正在进行网络搭建.机房内有 nn 台服务器和 mm 个分线器,整个机房只有一个网线出口.分线器的作用是将一根网线转换成多根网线.蒜头君也知道每个分线器输出的最大网 ...
- Tomcat启动时卡在 INFO HostConfig.deployDirectory Deploy
今天在服务器上部署网站时 启动tomcat无错 tail -f catalina.out日志 和 catalina.sh run 方式启动时 卡在 22-Jul-2016 23:00:53.921 I ...