Я хочу взяти введення від користувача. Підкажіть, будь ласка, як запитувати введення даних користувача як рядок у Scala?
Я хочу взяти введення від користувача. Підкажіть, будь ласка, як запитувати введення даних користувача як рядок у Scala?
Відповіді:
Зі списку сканування Scala (форматування та посилання були оновлені):
Коротка відповідь:
readInt
Довга відповідь:
Якщо ви хочете читати з терміналу, відвідайте
Console.scala
. Ви можете використовувати ці функції приблизно так:
Console.readInt
Крім того, для вашої зручності
Predef.scala
автоматично визначає деякі ярлики функцій уConsole
. Оскільки речіPredef
завжди і скрізь імпортуються автоматично, ви можете використовувати їх так:readInt
Ось стандартний спосіб читання значень Integer
val a=scala.io.StdIn.readInt()
println("The value of a is "+ a)
так само
def readBoolean (): Boolean Читає булеве значення з цілого рядка з stdin.
def readByte (): Байт Зчитує значення байта з цілого рядка з stdin.
def readChar (): Char Зчитує значення Char з цілого рядка з stdin.
def readDouble (): Double Зчитує значення Double з цілого рядка з stdin.
def readFloat (): Float Зчитує значення Float з цілого рядка зі stdin.
def readInt (): Int Зчитує значення Int з цілого рядка з stdin.
def readLine (текст: Рядок, аргументи: Будь-який *): Рядок Друкує відформатований текст до stdout і читає повний рядок із stdin.
def readLine (): String Читає повний рядок з stdin.
def readLong (): Long Читає значення Long із цілого рядка з stdin.
def readShort (): Short Зчитує коротке значення з цілого рядка з stdin.
def readf (формат: Рядок): Список [Будь-який] Читання в структурованому введенні з stdin, як зазначено специфікатором формату.
def readf1 (формат: String): Будь-яке зчитування в структурованому введенні з stdin, як вказано специфікатором формату, повертаючи лише перше витягнуте значення відповідно до специфікації формату.
def readf2 (формат: Рядок): (Будь-який, Будь-який) Читає в структурованому введенні з stdin, як вказано специфікатором формату, повертаючи лише перші два витягнуті значення відповідно до специфікації формату.
def readf3 (формат: Рядок): (Будь-який, Будь-який, Будь-який) Читає в структурованому введенні з 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: Рецепти об’єктно-орієнтованого та функціонального програмування Елвіна Александера
object InputTest extends App{
println("Type something : ")
val input = scala.io.StdIn.readLine()
println("Did you type this ? " + input)
}
Таким чином ви можете запитати введення.
scala.io.StdIn.readLine()
Ви можете взяти введення рядка користувача за допомогою 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)
}
}
Або ви можете використовувати клас сканера, щоб взяти введені користувачем дані.
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)
}
}
readLine дозволяє підказувати користувачеві та читати його введення як рядок
val name = readLine("What's your name? ")
Простий приклад читання вхідних даних від користувача
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
Також ми можемо використовувати Read Line
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
будь ласка, спробуй
scala> readint
будь ласка, спробуйте цей метод
val input = readLine("prompt> ")