Найдите то, что терпит неудачу в утверждении if - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть приведенный ниже код и я хочу использовать условие, которое не выполняется в моем тост-сообщении. Как мне сделать это, не проверяя каждый if?

if (player1.isNullOrBlank () || player2.isNullOrBlank ())
Toast.makeText (это: «Пожалуйста, введите оба имени игрока», Toast. LENGTH_LONG) .show ()

Ответы [ 4 ]

2 голосов
/ 28 апреля 2020

Я бы просто использовал здесь выражение when, так как вам придется проверять каждое условие независимо.

val errorMessage -> when {
    player1.isNullOrBlank() && player2.isNullOrBlank() -> "Please enter a name for both players"
    player1.isNullOrBlank() -> "Please enter a name for Player 1"
    player2.isNullOrBlank() -> "Please enter a name for Player 2"
    else -> null
}

if (errorMessage != null) {
    Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show()
} else {
    // success condition
}

Другой пример использования also вместо присваивания.

when {
    player1.isNullOrBlank() && player2.isNullOrBlank() -> "Please enter a name for both players"
    player1.isNullOrBlank() -> "Please enter a name for Player 1"
    player2.isNullOrBlank() -> "Please enter a name for Player 2"
    else -> null
}?.also { errorMessage ->
    Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show()
}

0 голосов
/ 28 апреля 2020

Вы можете использовать журналы:

Log.e("Player 1 Status", player1.isNullOrBlank() + "");
Log.e("Player 2 Status", player2.isNullOrBlank() + "");

и проверять красный журнал в LogCat при запуске.

0 голосов
/ 28 апреля 2020

Попробуйте что-то вроде этого:

val nullPlayerNames = listOf("p1" to player1, "p2" to player2)
    .filter { (_, p) -> p.isNullOrBlank() }
    .joinToString(separator = ", ") { (tag, _) -> tag }
Toast.makeText(this, nullPlayerNames, Toast.LENGTH_LONG).show()
0 голосов
/ 28 апреля 2020

Просто напишите код. Не задумывайтесь над этим. Просто проверьте, что вы должны проверить и предоставить хорошие сообщения об ошибках. Оператор || не выводит переменную боковой дорожки для проверки или что-либо подобное. Просто напишите код.

if (player1.isNullOrBlank() && player2.isNullOrBlank()) {
    Toast.makeText(this, "Please enter both player names", Toast.LENGTH_LONG).show()
} else if(player1.isNullOrBlank()) {
    Toast.makeText(this, "Please enter player name 1", Toast.LENGTH_LONG).show()
} else if(player2.isNullOrBlank()) {
    Toast.makeText(this, "Please enter player name 2", Toast.LENGTH_LONG).show()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...