我在下面的代碼中遇到了問題。
fun main() {
val table = mutableListOf(
mutableListOf(' ', ' ', ' '),
mutableListOf(' ', ' ', ' '),
mutableListOf(' ', ' ', ' ')
)
println("---------")
println("| " table[0][0] " " table[0][1] " " table[0][2] " |")
println("| " table[1][0] " " table[1][1] " " table[1][2] " |")
println("| " table[2][0] " " table[2][1] " " table[2][2] " |")
println("---------")
print("Enter the coordinates: ")
var coordinates = readLine()!!.split(" ").toMutableList()
var x = coordinates[0].toInt()
var y = coordinates[1].toInt()
while (x > 3 || x < 1 || y > 3 || y < 1) {
println("Coordinates should be from 1 to 3!")
print("Enter the coordinates: ")
coordinates = readLine()!!.split(" ").toMutableList()
x = coordinates[0].toInt()
y = coordinates[1].toInt()
}
while (table[x-1][y-1] == 'X' || table[x-1][y-1] == 'O') {
println("This cell is occupied! Choose another one!")
print("Enter the coordinates: ")
coordinates = readLine()!!.split(" ").toMutableList()
x = coordinates[0].toInt()
y = coordinates[1].toInt()
}
table[x-1][y-1] = 'X'
println("---------")
println("| " table[0][0] " " table[0][1] " " table[0][2] " |")
println("| " table[1][0] " " table[1][1] " " table[1][2] " |")
println("| " table[2][0] " " table[2][1] " " table[2][2] " |")
println("---------")
if (table[0][0] == 'X' && table[0][1] == 'X' && table[0][2] == 'X' ||
table[1][0] == 'X' && table[1][1] == 'X' && table[1][2] == 'X' ||
table[2][0] == 'X' && table[2][1] == 'X' && table[2][2] == 'X' ||
table[0][0] == 'X' && table[1][0] == 'X' && table[2][0] == 'X' ||
table[0][1] == 'X' && table[1][1] == 'X' && table[2][1] == 'X' ||
table[0][2] == 'X' && table[1][2] == 'X' && table[2][2] == 'X' ||
table[0][0] == 'X' && table[1][1] == 'X' && table[2][2] == 'X' ||
table[2][0] == 'X' && table[1][1] == 'X' && table[0][2] == 'X'
) {
println("X wins")
} else if (table[0][0] == 'O' && table[0][1] == 'O' && table[0][2] == 'O' ||
table[1][0] == 'O' && table[1][1] == 'O' && table[1][2] == 'O' ||
table[2][0] == 'O' && table[2][1] == 'O' && table[2][2] == 'O' ||
table[0][0] == 'O' && table[1][0] == 'O' && table[2][0] == 'O' ||
table[0][1] == 'O' && table[1][1] == 'O' && table[2][1] == 'O' ||
table[0][2] == 'O' && table[1][2] == 'O' && table[2][2] == 'O' ||
table[0][0] == 'O' && table[1][1] == 'O' && table[2][2] == 'O' ||
table[2][0] == 'O' && table[1][1] == 'O' && table[0][2] == 'O'
) {
println("O wins")
}
}
我可以檢查輸入是否小于或大于 3(坐標),并且還可以檢查該欄位是否被占用。但是我如何檢查輸入不是一個帶有 while 回圈的字串,比如檢查欄位占用和坐標。提前致謝!
uj5u.com熱心網友回復:
我建議這樣做
x = coordinates[0].toIntOrNull() ?: 99
y = coordinates[1].toIntOrNull() ?: 99
與toInt()and的區別toIntOrNull()在于,toIntOrNull()當它無法將其轉換為 Int 時不會引發例外,而是會回傳 null。這可以使用 elvis 運算子重定向到后備號碼?:。您可以在此處放置任何不在您要求的 1-3 范圍內的內容。我只是選擇了 99 來證明這一點。
uj5u.com熱心網友回復:
我是這樣做的:
print("Enter the coordinates: ")
var coordinates = readLine()!!.split(" ").toMutableList()
while (coordinates[0].length > 1 || coordinates[1].length > 1 || coordinates[0].length > 1 && coordinates[1].length > 1 ) {
println("You should enter numbers!")
print("Enter the coordinates: ")
coordinates = readLine()!!.split(" ").toMutableList()
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/365100.html
上一篇:Python,算術序列的函式
