我有一个应该返回 Long 的方法。
但我收到一个错误:
**type mismatch; found : Long required: Int**
方法如下:
def getRandom_IMEI(from : Long,to : Long) : Long = {
if (from < to)
return from + new scala.util.Random().nextInt(Math.abs(to - from));
return from - new scala.util.Random().nextInt(Math.abs(to - from));
}
当我像这样调用这个方法时:
def IMEI() : String ={
var str: String =""
var rand:Long = 0
rand = functest.getRandom_IMEI(350000000000000,355000000000000) //error
str=rand.toString()
return str
}
我有这个错误:
Multiple markers at this line:
◾integer number too large
◾integer number too large
在不确定你的目标是什么的情况下,我的注意力集中在以下事情上。
当您编写时,出现以下行错误:
rand = functest.getRandom_IMEI(350000000000000,355000000000000) //error
你需要通过添加来使其变长L
在长数的末尾。
rand = functest.getRandom_IMEI(350000000000000L,355000000000000L)
但你仍然可以清洁你的IMEI()
方法所以看起来像这样,没有必要var
并且你不需要声明str
因为你正在返回字符串:
def IMEI(): String = {
val rand = getRandom_IMEI(355000000000000L, 350000000000000L)
rand.toString
}
注意:long 类型是通过在后面附加 L 或 l 后缀来指定的
文学(link https://en.wikipedia.org/wiki/Java_syntax)
另一件事是你的getRandom_IMEI
也不适合我,我做了一些简单的事情,例如:
def getRandom_IMEI(from: Long, to: Long): Long = {
if (from < to) {
from + new scala.util.Random(to - from).nextLong()
} else {
from - new scala.util.Random(to - from).nextLong()
}
}
因为我不知道你的最终目标,但你也可以使用nextInt()
代替.nextLong()
。但也许你有一个工作代码,你可以按照你的方式去做。我已经测试过并且可以工作。
- Scala 中的一般规则不需要以
;
像Java一样
- 您不需要 return,它会自动返回最后一条语句,因此您可以轻松地从第二个方法中删除 return 并保留
str
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)