web-dev-qa-db-fra.com

Comment prendre les entrées d'un utilisateur dans Scala?

Je veux prendre les commentaires de l'utilisateur. Pouvez-vous s'il vous plaît me dire comment demander à l'utilisateur d'entrer sous forme de chaîne dans Scala?

51
sam

Dans Scala 2.11, utilisez

scala.io.StdIn.readLine()

au lieu du Console.readLine obsolète.

90
elm

À partir de Liste de vérification (le formatage et les liens ont été mis à jour):

Réponse courte:

readInt

Longue réponse:

Si vous voulez lire depuis le terminal, consultez Console.scala . Vous pouvez utiliser ces fonctions comme suit:

Console.readInt

Aussi, pour votre commodité, Predef.scala définit automatiquement certains raccourcis vers les fonctions dans Console. Puisque les éléments dans Predef sont toujours et partout importés automatiquement, vous peut les utiliser comme suit:

readInt
16
Colin Smith

Voici un moyen standard de lire les valeurs entières 

val a=scala.io.StdIn.readInt()
println("The value of a is "+ a)

de même

def readBoolean (): Boolean Lit une valeur booléenne d'une ligne entière à partir de stdin.

def readByte (): Byte Lit une valeur d'octet d'une ligne entière à partir de stdin.

def readChar (): Char Lit une valeur Char d'une ligne entière à partir de stdin.

def readDouble (): Double Lit une valeur Double sur une ligne entière à partir de stdin.

def readFloat (): Float Lit une valeur Float d’une ligne entière à partir de stdin.

def readInt (): Int Lit une valeur Int d'une ligne entière à partir de stdin.

def readLine (text: String, args: Any *): String Imprime le texte mis en forme sur stdout et lit une ligne complète à partir de stdin.

def readLine (): String Lit une ligne complète à partir de stdin.

def readLong (): Long Lit une valeur Long depuis une ligne entière à partir de stdin.

def readShort (): Short Lit une valeur Short d'une ligne entière à partir de stdin.

def readf (format: String): Liste [Tous] Lit en entrée structurée à partir de stdin comme spécifié par le spécificateur de format.

def readf1 (format: String): Any Lit en entrée structurée à partir de stdin, comme spécifié par le spécificateur de format, en renvoyant seule la première valeur extraite, conformément à la spécification de format.

def readf2 (format: String): (Any, Any) Lit les entrées structurées à partir de stdin comme spécifié par le spécificateur de format, en retournant uniquement les deux premières valeurs extraites, conformément à la spécification de format.

def readf3 (format: String): (Any, Any, Any) Lit en entrée structurée à partir de stdin comme spécifié par le spécificateur de format, en retournant uniquement les trois premières valeurs extraites, conformément à la spécification de format.

De même, si vous voulez lire plusieurs entrées utilisateur à partir de la même ligne, ex: nom, âge, poids, vous pouvez utiliser l'objet 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

abrégé de Scala Cookbook: Recettes pour la programmation orientée objet et fonctionnelle par Alvin Alexander

11
sdinesh94
object InputTest extends App{

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

}

De cette façon, vous pouvez demander une entrée. 

scala.io.StdIn.readLine()
7
Jet

Vous pouvez prendre une entrée de chaîne utilisateur en utilisant readLine ().

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

Ou vous pouvez utiliser la classe scanner pour prendre une entrée utilisateur.

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)
  }
}
0
Sachin Muthumala

Exemple simple pour lire les entrées de l'utilisateur

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

Aussi, nous pouvons utiliser Read Line 

val name = readLine("What is your name ")
What is your name name: String = Viraj
0
Viraj.Hadoop

Dans Spark 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
     }
}

Ce code est saisi par l'utilisateur et généré:

[input] Enter the number of lines to read in: 2
one
two

[output] output.txt
one
two
0
Dio

readLine vous permet d'inviter l'utilisateur et de lire ses entrées sous forme de chaîne 

val name = readLine("What's your name? ")
0
user3503711