Dưới đây là A + B ví dụ trong Kotlin:
fun main(vararg args: String) {
val (a, b) = readLine()!!.split(' ')
println(a.toInt() + b.toInt())
}
hoặc
fun main(vararg args: String) {
val (a, b) = readLine()!!.split(' ').map(String::toInt)
println(a + b)
}
hoặc
fun readInts(separator: Char = ' ') = readLine()!!.split(separator).map(String::toInt)
fun main(vararg args: String) {
val (a, b) = readInts()
println(a + b)
}
hoặc
import java.util.Scanner
fun main(vararg args: String) {
val input = Scanner(System.`in`)
val a = input.nextInt()
val b = input.nextInt()
println(a + b)
}
hoặc
with(Scanner(System.`in`)) {
val a = nextInt()
val b = nextInt()
println(a + b)
}
Ghi chú rằng Scanner là somewhat slow. Điều này có thể quan trọng trong một số trường hợp như lập trình cạnh tranh trong đó thực thi chương trình trên các đầu vào lớn có thể được thực hiện nhanh hơn gấp hai lần chỉ bằng cách thay thế Scanner bằng đồng bằng readLine.
I hope một ngày nào đó một bản tóm tắt, nền tảng, hiệu suất, phổ quát cho cả hỗ trợ phân tích cú pháp đầu vào của bàn điều khiển và tệp sẽ được giới thiệu trong Kotlin stdlib. Giống như readInt
, readLong
, v.v. toàn cầu và Reader
chức năng mở rộng.
Bonus
Đôi khi bạn bắt đầu với giao diện điều khiển đầu vào/đầu ra nhưng sau đó cần phải chuyển sang tập tin. Nó trở nên quá tẻ nhạt để thêm vào mỗi lần đọc hoặc ghi cuộc gọi với biến luồng tệp.
Đây là một sự yên Kotlin kỳ diệu mà cho phép chỉ gói mã giao diện điều khiển không thay đổi với một vài dòng để buộc nó đọc và ghi vào file cũng đảm bảo họ được đóng lại đúng cách:
fun <T : Closeable, R> T.useWith(block: T.() -> R): R = use { with(it, block) }
File("a.in").bufferedReader().useWith {
File("a.out").printWriter().useWith {
val (a, b) = readLine()!!.split(' ').map(String::toInt)
println(a + b)
}
}
Scanner(File("b.in")).useWith {
PrintWriter("b.out").useWith {
val a = nextInt()
val b = nextInt()
println(a + b)
}
}
dòng Bao bì có thể nhanh chóng nhận xét khi xảy ra sự cần thiết phải chuyển về bàn điều khiển.
Đây có phải là một bài tập về nhà? – miensol
@miensol Không chỉ tôi đang cố gắng học một ngôn ngữ mới – siur