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 ...
随机推荐
- Visual Studio 2015 msvsmon.exe crashed when c++ debugging with x64
Completely uninstalling Astrill fixed the issue but this solution is not what I want. Astrill suppor ...
- python 信息同时输出到控制台与文件
python编程中,往往需要将结果用print等输出,如果希望输出既可以显示到IDE的屏幕上,也能存到文件中(如txt)中,该怎么办呢? 方法1 可通过日志logging模块输出信息到文件或屏幕.但可 ...
- mybatis-plus快速入门使用
目前正在维护的公司的一个项目是一个ssm架构的java项目,dao层的接口有大量数据库查询的方法,一个条件变化就要对应一个方法,再加上一些通用的curd方法,对应一张表的dao层方法有时候多达近20个 ...
- [微信小程序] 通过快速启动demo分析小程序入门关键点
(1)小程序基础结构 下图是在开发者工具通过快速启动模式创建的小程序的目录结构 可以看到,小程序中主要包含有4中类型不同的文件 .json 后缀的 JSON 配置文件 .wxml 后缀的 WXML 模 ...
- maven报 Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile(defalut-compile) on project 项目名称:No such compile 'javac'
这个问题纠结了一天,在另外一个电脑是正常的,但是从服务器下载下来到另外一个电脑的时候却出现了如下图问题 看到javac大家都会想到是编译出现问题,而本地的配置如下图所示: 看着配置都是一致的,会是哪里 ...
- 自动化测试工具Katalon简单使用
前一段时间接触了下Katalon,当时只是简单用了下,今天看到Katalon给发邮件,发现都忘记了,因此重新学习并记录下来 Katalon是在Selemium相同的内核上构建起来的一个自动化测试工具 ...
- Laravel Homestead 离线安装
一.写在之前,网络不够快想要安装Homestead,也是一个浩大的工程,对于下载一个 1.22G左右的 laravel/homestead box 也是非常的麻烦.那么如何才能离线安装呢? 接着往下看 ...
- page load时执行JavaScript
// Multiple onload function created by: Simon Willison // http://simonwillison.net/2004/May/26/addLo ...
- Sqlalchemy model 文件自动生成
自动生成Sqlalchemy的models文件的包早用过了,有个字段类型做了改动,调了得10几分钟才搞定.记录下自动生成models文件的python包sqlacodegen sqlacodegen已 ...
- Xcode - Xcode10上传应用到AppStore
Xcode 10 如何上传应用到AppStore?Product->Archive 后,原来Xcode 10 之前的版本是直接有两个按钮,一个upload to AppStore,另一个叫Exp ...