我是使用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
}
}
我得到的错误是“类型不匹配;找到:需要单位:长”在这一行: if(y == 0){
我应该改变什么?在此先感谢您的帮助!
答案 0 :(得分: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
}
答案 1 :(得分:5)
首先,如果你想从命令行读取数字,那么你的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)
}
然后阅读数字:
val (a, b) = readNumbers()
GCD方法:
def gcd(a: Long, b: Long): Long = if (b == 0) a else gcd(b, a % b)
并在数字上调用它:
gcd(a, b)
Scala一方面是功能性的,因此每个表达式都会产生一些值,而在Scala中,如果是表达式,则不是语句。