Как преобразовать выражение If в выражение тернарного оператора - PullRequest
0 голосов
/ 27 мая 2019

Я работаю с версией Java "1.8.0_171". Я пытаюсь преобразовать этот простой оператор If в троичное выражение / оператор:

private String player;   // a class variable
.     .    .     .     .     .    .    .     .     .
public String switchPlayer(String player) {
    if(this.player == "X")
        this.player = "O";
    else
        this.player = "X";
    return player;
}  

Я попытался заменить оператор If в этом методе следующим троичным оператором:

player == "X"? «О»: «Х»;

Java помечает == «X» в этом выражении следующей ошибкой:

Multiple markers at this line
- Type mismatch: cannot convert from String to 
 boolean
- Syntax error on token "==", invalid 
 AssignmentOperator  

Это быстрое исправление, которое предлагает Eclipse:

String dummy = player == "X" ? "O" : "X";  

Это кажется немного странным, но у троичного оператора в Java есть требование присваивания переменной слева. Единственная ошибка, которую я получаю сейчас, - это простое предупреждение о том, что я не использую переменную dummy в другом месте моего кода.

Я просто собираюсь использовать простое утверждение If, потому что значение рефактора здесь имеет небольшое значение. Я думал, что в любом случае опубликую это, чтобы узнать, есть ли какие-либо отзывы от сообщества.

1 Ответ

1 голос
/ 27 мая 2019

Я думаю, что это сработает, если вы попробуете:

this.player = this.player == "X"? "O" : "X";
...