2012-10-07 35 views
8

đây là mã của tôi:Scala, làm thế nào để đọc nhiều hơn một số nguyên trong một dòng và nhận chúng trong một biến?

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

Nhưng định dạng đầu vào là: 3 số nguyên trong cùng một dòng. Nhưng đối với 3 số nguyên trong một dòng scala sẽ xem xét rằng như là một chuỗi. Làm thế nào tôi có thể đọc chuỗi đó và nhận được 3 giá trị trong 3 biến được tách biệt?

Trả lời

22

Bạn có thể sử dụng mã sau đây sẽ đọc một dòng và sử dụng 3 mã thông báo được phân tách bằng khoảng trắng đầu tiên làm đầu vào. (Mong đợi ví dụ: "1 2 3" làm đầu vào trên một dòng)

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

'Mảng val (m, n, d) = readLine.split (" ") .map (_. ToInt) ' –

+0

@KimStebel tốt đẹp, được cập nhật câu trả lời;) – xhochy

+1

một số khác: 'val x # :: y # :: z # :: rest = Stream.continually (readInt) .take (3)' – 4e6

0

Bạn có thể sử dụng Java.util.Scanner trong chương trình scala. này hỗ trợ các chức năng của máy quét có sẵn trong 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)); 
} 
} 
Các vấn đề liên quan