如何从Scala中的用户获取输入?

sam*_*sam 64 scala

我想从用户那里获取输入.你能告诉我如何在Scala中要求用户输入字符串吗?

elm*_*elm 107

在Scala 2.11中使用

scala.io.StdIn.readLine()
Run Code Online (Sandbox Code Playgroud)

而不是弃用Console.readLine.


小智 19

Scala maling列表(格式和链接已更新):

简短回答:

readInt
Run Code Online (Sandbox Code Playgroud)

答案很长:

如果您想从终端阅读,请查看Console.scala.你可以像这样使用这些函数:

Console.readInt
Run Code Online (Sandbox Code Playgroud)

此外,为方便起见,还会Predef.scala 自动定义函数的一些快捷方式Console.由于内容Predef总是在所有位置自动导入,因此您可以像这样使用它们:

readInt
Run Code Online (Sandbox Code Playgroud)

  • 我认为即使它存在于其他地方也可以询问它...邮件列表格式不是最容易阅读的格式. (24认同)
  • @huynhjl确实,创建Stack Overflow的原因之一是因为搜索邮件列表很糟糕. (6认同)
  • @huynhjl,我同意.我们中的一些人(我)通过谷歌得到了这个答案. (4认同)

sdi*_*h94 13

这是读取Integer值的标准方法

val a=scala.io.StdIn.readInt()
println("The value of a is "+ a)
Run Code Online (Sandbox Code Playgroud)

同样

def readBoolean():Boolean从stdin中读取整行的布尔值.

def readByte():Byte从stdin中读取整行的字节值.

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并从标准输入读取整行.

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读取结构化输入,根据格式规范仅返回提取的前三个值.

同样,如果要从同一行ex:name,age,weight读取多个用户输入,可以使用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
Run Code Online (Sandbox Code Playgroud)

从Scala Cookbook中删除:Alvin Alexander的面向对象和功能编程配方


Jet*_*Jet 8

object InputTest extends App{

    println("Type something : ")
    val input = scala.io.StdIn.readLine()
    println("Did you type this ? " + input)

}
Run Code Online (Sandbox Code Playgroud)

这样你就可以询问输入.

scala.io.StdIn.readLine()
Run Code Online (Sandbox Code Playgroud)


Sac*_*ala 6

您可以使用 readLine() 获取用户字符串输入。

import scala.io.StdIn._

object q1 {
  def main(args:Array[String]):Unit={  
    println("Enter your name : ")
    val a = readLine()
    println("My name is : "+a)
  }
}
Run Code Online (Sandbox Code Playgroud)

或者您可以使用扫描仪类来获取用户输入。

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)
  }
}
Run Code Online (Sandbox Code Playgroud)