2012-10-07 28 views
8

aquí es mi código:Scala, ¿cómo leer más de un entero en una línea y obtenerlos en una variable cada uno?

object theater extends App { 

    val m = readInt 
    val n = readInt 
    val a = readInt 

    val c1 = m/a + (if(m%a == 0) 0 else 1) 
    val c2 = n/a + (if(n%a == 0) 0 else 1) 
    print(c1 + c2) 
} 

Pero el formato de entrada es: 3 enteros en la misma línea. Pero para 3 enteros en una línea, Scala lo considerará como una cadena. ¿Cómo puedo leer esa cadena y obtener los 3 valores en las 3 variables separadas?

Respuesta

22

Puede usar el siguiente código que leerá una línea y usará los primeros 3 tokens separados por espacios en blanco como entrada. (Espera por ejemplo "1 2 3" como entrada en una línea)

val Array(m,n,d) = readLine.split(" ").map(_.toInt) 
+2

array 'val (m, n, d) = readLine.split (" ") .map (_. Toint)' –

+0

@KimStebel agradable, actualizado la respuesta;) – xhochy

+1

otra: 'val x # :: y # :: z # :: rest = Stream.continually (readInt) .take (3)' – 4e6

0

Puede utilizar el Java.util.Scanner en los programas de Scala. Esto apoya las funciones de escáner que está disponible en java

import java.util.Scanner; 
object Addition{ 
def main(args: Array[String]){ 
    var scanner = new Scanner(System.in); //defining scanner object 
    println("Enter two numbers : "); 
    var a = scanner.nextInt();   //reading space separated input 
    var b = scanner.nextInt(); 
    println("The result is : "+(a+b)); 
} 
} 
Cuestiones relacionadas