所以我必须遵循以下场景:
def check(): Boolean = {
for ((digit1,digit2,digit3) <- SetOfDigits){
if ((1,2,5) == (digit1,digit2,digit3))
true
else
false
}
}
val SetOfDigits = Set((0,2,3),(1,5,6),(7,10,2),(1,2,5))
Run Code Online (Sandbox Code Playgroud)
现在的问题是函数必须返回一个布尔值,但它总是告诉我这里的返回类型是Unit?该函数应该迭代SetOfDigits,如果它找到相同的东西,(1,2,5)它应该返回true,否则为false?有没有人能够解决这个问题以及为了让它运转起来我必须做些什么?
所以这是我的代码:
val regexMeter = """^\s*(\d+,*\d+)\s*[m]\s*$""".r
val regexCentimeter = """^\s*(\d+,*\d+)\s*cm\s*$""".r
val regexDecimeter = """^\s*(\d+,*\d+)\s*dm\s*$""".r
val regexMillimeter = """^\s*(\d+,*\d+)\s*mm\s*$""".r
val height = scala.io.StdIn.readLine("Please insert the height of your shape:")
height match {
case regexMeter(value) => val newValue = value.toDouble*100
case regexCentimeter(value) => val newValue = value.toDouble
case regexDecimeter(value) => val newValue = value.toDouble*10
case regexMillimeter(value) => val newValue = value.toDouble/10
case _ => throw new IllegalArgumentException
}
Run Code Online (Sandbox Code Playgroud)
所以事情是我的输入是例如:"21m"并且它只获取21并且如果它的正则表达式与米匹配它将它分配给它val newValue并用它做一些东西.但是,当我现在想要打印那个值newValue时,它说它无法找到价值?如何从这个匹配案例中返回此val?
我有一个带字符串的列表,我想打印出最长的字符串
我已经尝试过该reduceLeft选项,但无论何时我应用它都会返回此错误:
type mismatch; found:String required:Ordering[?]
Run Code Online (Sandbox Code Playgroud)
以下是在第二行中抛出异常的代码:
val input2 = List("one", "two", "three", "four", "five")
for (entry <- input2.reduceLeft(_ max _)) println(input2.max)
Run Code Online (Sandbox Code Playgroud) 我有这样的事情:
case class FunctionsTest(lowerBound: Int = 1,
upperBound: Int = 1000,
factor: Int = 2) {
require(lowerBound < upperBound)
/**
* implement a sequence of ints, which start with lowerBound and end with
* upperbound.
*
* for all elements following should be true:
*
* xs(i) < xs(i+1)
* xs(i) + factor == xs(i + 1) (for i > 0 and i <= 1000)
*
*/
val xs: Seq[Int] = Seq.range(lowerBound,upperBound +1)
Run Code Online (Sandbox Code Playgroud)
所以我需要一个这个类的序列来满足这些标准..我尝试了
序列范围()
但它为我创建了适合第一个标准的序列,但我不知道现在如何应用评论中提到的第二个标准?
我有以下代码片段:
import scala.io.Source
object test extends App {
val lineIterator = Source.fromFile("test1.txt").getLines()
val fileContent = lineIterator.foldLeft(List[String]())((list, currentLine) => {
currentLine :: list
list
})
fileContent foreach println
}
Run Code Online (Sandbox Code Playgroud)
假设test1.txt文件不为空,并且其中包含一些值。所以我对foldLeft函数的问题是,为什么此示例在此返回一个空列表,而当我list在foldLeft函数末尾删除时,它可以正常工作?为什么在值下返回一个空列表fileContent?
我只想弄清楚像List这样的不可变的东西是如何工作的,以及我如何为它添加东西?
我很抱歉问这些愚蠢的问题,但是为什么我的列表在打印时总是空的?
var end = false
val list = List()
while (!end) {
val input = scala.io.StdIn.readLine("input:")
if (input == "stop" ) end = true
else input :: list
}
println(list)
}
Run Code Online (Sandbox Code Playgroud)
很抱歉给我带来不便和这个相当愚蠢的问题!
我刚刚写了这段代码以获得一些乐趣,我有一个问题,为什么它没有成功?
val list = List[Int]()
while (list.length < 20) {
Random.nextInt(100) :: list
}
println(list)
}
Run Code Online (Sandbox Code Playgroud)
似乎没有任何内容写入列表,但为什么会这样呢?我必须让它变得可变吗?为什么这里的::操作员工作不正常?