我想接受用户的输入。您能告诉我如何在Scala中以字符串形式要求用户输入吗?
我想接受用户的输入。您能告诉我如何在Scala中以字符串形式要求用户输入吗?
Answers:
从Scala maling列表中(格式和链接已更新):
简短答案:
readInt
长答案:
如果要从终端读取,请签出
Console.scala
。您可以像这样使用这些功能:
Console.readInt
另外,为方便起见,会
Predef.scala
自动定义一些功能的快捷方式Console
。由于进来的东西Predef
始终随处自动导入,因此您可以像这样使用它们:readInt
这是读取整数值的标准方法
val a=scala.io.StdIn.readInt()
println("The value of a is "+ a)
类似地
def readBoolean():布尔值从stdin的整行中读取一个布尔值。
def readByte():Byte从整行的stdin中读取Byte值。
def readChar():Char从整行的stdin读取Char值。
def readDouble():Double从整行的stdin中读取Double值。
def readFloat():Float从整行从stdin读取Float值。
def readInt():Int从整行的stdin中读取一个Int值。
def readLine(text:String,args:Any *):String将格式化的文本打印到stdout并从stdin读取整行。
def readLine():String从stdin读取整行。
def readLong():Long从整行的stdin中读取Long值。
def readShort():Short从stdin的整行中读取Short值。
def readf(format:String):List [Any]按照格式说明符的指定从stdin读取结构化输入。
def readf1(format:String):根据格式说明符,从stdin中读取任何结构化输入,如格式说明符所指定,仅返回提取的第一个值。
def readf2(format:String):(Any,Any)按照格式说明符从stdin读取结构化输入,根据格式说明仅返回提取的前两个值。
def readf3(format:String):(Any,Any,Any)按照格式说明符从stdin读取结构化输入,根据格式说明仅返回提取的前三个值。
同样,如果您想从同一行中读取多个用户输入,例如:姓名,年龄,体重,则可以使用Scanner对象
import java.util.Scanner
// simulated input
val input = "Joe 33 200.0"
val line = new Scanner(input)
val name = line.next
val age = line.nextInt
val weight = line.nextDouble
摘自Scala Cookbook:Alvin Alexander的面向对象和函数式编程食谱
您可以使用readLine()获取用户String输入。
import scala.io.StdIn._
object q1 {
def main(args:Array[String]):Unit={
println("Enter your name : ")
val a = readLine()
println("My name is : "+a)
}
}
或者,您可以使用扫描仪类接受用户输入。
import java.util.Scanner;
object q1 {
def main(args:Array[String]):Unit={
val scanner = new Scanner(System.in)
println("Enter your name : ")
val a = scanner.nextLine()
println("My name is : "+a)
}
}
从用户读取输入的简单示例
val scanner = new java.util.Scanner(System.in)
scala> println("What is your name") What is your name
scala> val name = scanner.nextLine()
name: String = VIRAJ
scala> println(s"My Name is $name")
My Name is VIRAJ
我们也可以使用读线
val name = readLine("What is your name ")
What is your name name: String = Viraj
在Scala 2中:
import java.io._
object Test {
// Read user input, output
def main(args: Array[String]) {
// create a file writer
var writer = new PrintWriter(new File("output.txt"))
// read an int from standard input
print("Enter the number of lines to read in: ")
val x: Int = scala.io.StdIn.readLine.toInt
// read in x number of lines from standard input
var i=0
while (i < x) {
var str: String = scala.io.StdIn.readLine
writer.write(str + "\n")
i = i + 1
}
// close the writer
writer.close
}
}
此代码从用户获取并输出:
[input] Enter the number of lines to read in: 2
one
two
[output] output.txt
one
two
val input = readLine("prompt> ")