amk*_*o23 1 eclipse types scala long-integer
我是使用Scala的新手,大多数时候我不知道如何处理错误消息.有人可以帮我这个代码吗?我需要更改什么才能使此代码生效?顺便说一下,我正在Scala中写Euklid最大的公约数.
def userInput() {
var x: String = Console.readLine("Please enter the first number you want to calculate. ")
var y: String = Console.readLine("Please enter the second number you want to calculate. ")
println(userInput())
}
def ggt(firstNumber: Long, secondNumber: Long): Long = {
var x = firstNumber
var y = secondNumber
if (y == 0) {
return x
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是"类型不匹配;找到:单位必需:长"在这一行:if(y == 0){
我应该改变什么?在此先感谢您的帮助!
cmb*_*ter 13
你的ggt功能需要返回一个Long并不总是这样做.首先,您可以删除return关键字,因为scala函数将始终返回最后一行中的任何内容.然后,在y != 0使此函数定义有效时需要返回值.现在,它正在返回Unit,就像void是因为那里没有其他阻止.改成这样的东西你应该全部设置:
def ggt(firstNumber: Long, secondNumber: Long): Long = {
var x = firstNumber
var y = secondNumber
if (y == 0) x
else y
}
Run Code Online (Sandbox Code Playgroud)
首先,如果你想从命令行读取数字,那么你的userInput是不正确的,它应该是这样的:
def readNumbers(): (Long, Long) = {
println("Print the first number")
val first = Console.readLong()
println("Println the seconds number")
val second = Console.readLong()
(first, second)
}
Run Code Online (Sandbox Code Playgroud)
然后读取数字:
val (a, b) = readNumbers()
Run Code Online (Sandbox Code Playgroud)
GCD方法:
def gcd(a: Long, b: Long): Long = if (b == 0) a else gcd(b, a % b)
Run Code Online (Sandbox Code Playgroud)
并在数字上调用它:
gcd(a, b)
Run Code Online (Sandbox Code Playgroud)
Scala一方面是一个函数,因此每个表达式都会产生一些值,而在Scala中,如果是表达式,则不是语句.
| 归档时间: |
|
| 查看次数: |
235 次 |
| 最近记录: |