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 ...
随机推荐
- 微信公众号 chinaxdt 的 解压密码 mima
关于密码:解压密码获取方式第一步关注微信号“chinaxdt”第二步发送信息“mima”即可获取自动回复解压密码 这个 chinaxdt 的微信公众号已经失效,所以大家也不用去加了,密码我这告诉大家. ...
- REST与SOA两种架构的异同
REST的特性 它基于HTTP协议,是一种明确构建在客户端/服务端体系结构上的一种风格.特征如下: 1.网络上的资源都被抽象为资源,这些资源都具有唯一的统一资源标识符(URI:Uniform Reso ...
- phpunit assert断言分类整理
布尔类型 方法名 含义 参数 返回值 assertTrue 断言为真 assertFalse 断言为假 NULL类型 方法名 含义 参数 返回值 assertNull 断言为NULL ...
- Socket端口复用
在网络应用中(如Java Socket Server),当服务关掉立马重启时,很多时候会提示端口仍被占用(因端口上有处于TIME_WAIT的连接).此时可通过 SO_REUSEADDR 参数( soc ...
- 关于C#中遍历字符串中的每个字符的方法
解决方案 C#提供了两个方法用于遍历字符串. 1.第一个方法是foreach循环,这个方法快速且容易,但是与第二个方法相比它不太灵活.其使用方法如下: string testStr = "a ...
- MySQL server has gone away
场景: 批量写入数据时,MySQL server has gone away 解决方法: 在 my.ini 中 将 max_allowed_packet 参数设置大一点 show global va ...
- Zookeeper系列六:服务器角色、序列化与通信协议、数据存储、zookeeper总结
一.服务器角色 1. Leader 1)事务请求的唯一调度者和处理者.保证事务处理的顺序性 事务请求:导致数据一致性的请求(数据发生改变).如删除一个节点.创建一个节点.设置节点数据,设置节点权限就是 ...
- SAR指标(转)
转自(https://zhidao.baidu.com/question/187156399.html) SAR指标又叫抛物线指标或停损转向操作点指标,其全称叫“Stop and Reverse,缩写 ...
- Swagger UI 传入对象类型参数
Swagger要传送对象作为参数,只需添加@ModelAttribute或@RequestBody @RestController @RequestMapping("/api/json/re ...
- windows 端口被占用,并杀死进程的方法
netstat -ano | findstr 8081 查询端口 被什么进程占用 tasklist | findstr 2184 根据进程号 查询任务名称 taskkill /f /t /im jav ...