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 ...
随机推荐
- 从零开始搭建FAQ引擎--深度语义匹配
从零开始搭建FAQ引擎--深度语义匹配
- EL表达式具体解释
在 JSP 页面中,使用标签库取代传统的 Java 片段语言来实现页面的显示逻辑已经不是新技术了,然而.由自己定义标签非常easy造成反复定义和非标准的实现.鉴于此.出现了 JSTL ( JSP St ...
- Vue:在vue-cli中使用Bootstrap
一.安装jQuery Bootstrap需要依赖jQuery,所以引用Bootstrap之前要先引用jQuery,使用下面的命令引用jQuery: npm install jquery --save ...
- tracert traceroute
二者都用于探测数据包从源到目的经过路由的IP,但两者探测的方法却有差别.不同点:一.应用环境不同tracert是应用在windows下.traceroute则是应用在linux/BSD/router/ ...
- Swagger UI 传入对象类型参数
Swagger要传送对象作为参数,只需添加@ModelAttribute或@RequestBody @RestController @RequestMapping("/api/json/re ...
- clientHeight scrollHeight offsetHeight
<div style="height:200px;padding:10px;border:1px solid green;"></div> 对于上面的di ...
- easyui的tree节点的获取和选中
1.设置选中tree的节点 var node = $('#tt').tree('find', 1);//找到id为”tt“这个树的节点id为”1“的对象$('#tt').tree('select', ...
- 安装Oracle Database 11g 找不到文件“WFMLRSVCApp.ear” .
在64位Windows 7 系统下安装Oracle Database 11g 的过程中,出现提示:“未找到文件D:\app\Administrator\product\11.2.0\dbhome_1\ ...
- 给vscode添加右键打开功能
将以下文本存为vscode.reg,然后运行: Windows Registry Editor Version 5.00 ; Open files [HKEY_CLASSES_ROOT\*\shel ...
- sendmail邮件自动发送
配置邮件自动发送: 1.安装软件 yum -y install sendmail mailx 2.发送邮件的邮箱授权 eg:y******@126.com 网页网易云邮箱登陆 --> 设置 -- ...