2012-10-07 12 views
8

Ecco il mio codice:Scala, come leggere più di un intero in una riga e recuperarli in una variabile ciascuno?

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) 
} 

Ma il formato di ingresso è: 3 interi nella stessa linea. Ma per 3 interi in una linea, lo considereremo come una stringa. Come posso leggere quella stringa e ottenere i 3 valori nelle 3 variabili separate?

risposta

22

È possibile utilizzare il seguente codice che leggerà una riga e utilizzerà i primi 3 token separati da spazi bianchi come input. (Attende ad esempio "1 2 3" come ingresso su una linea)

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

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

+0

@KimStebel bello, aggiornamento la risposta;) – xhochy

+1

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

0

È possibile utilizzare la java.util.Scanner nei programmi Scala. Questo supporta le funzioni di scanner che è disponibile in 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)); 
} 
} 
Problemi correlati