2015-02-13 4 views
2

В Java есть игра Tic Tac Toe, я пытаюсь понять синтаксис метода, но я не понимаю, что делает оператор return. Вот метод, который находится в классе TicTacToePanel:Синтаксис заявления о возврате метода метода

private String getStartPlayer() { 
    String[] players = {"X","O"}; 
    int value = -1; 
    while (value == -1) { 
     value = JOptionPane.showOptionDialog(null, 
      "Select player to start the game:", "Start Player", 
      JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, 
      players, "X"); 
     System.out.println(value); 
    } 
    return (value == 0 ? "X" : "O"); 
} 

Что я конкретно не понимая это return. Я знаю, что это другой способ сказать что-то, но я не знаком с ? и : Если в игре должно было быть больше игроков, таких как Y и Z, как бы вы использовали этот оператор возврата для более чем двух опций?

+0

Он должен быть изменен, если бы было больше, чем 2 возможных возвращаемых значений. Тернарный оператор специально используется для возврата одного из двух возможных вариантов, основанных на логическом значении. – dave823

ответ

3
return (value == 0 ? "X" : "O"); 

такая же, как

if(value == 0) 
    return "X"; 
else 
    return "O"; 
1

Это условный оператор (единственный тернарный оператор Java - thanks @Pshemo), обозначенный оператором ?.

Я прочитал его как , если? затем: В противном случае;

return (value == 0 ? "X" : "O"); 

Таким образом, если value равен 0, return "X", в противном случае return "O".

Oracle's documentation описывает его как:

условных операторов

?: Ternary (сокращение для если-то-иначе заявление)

Это может быть использовано для любого присваивание, а не только операторы возврата:

String noughtOrCross = (value == 0 ? "X" : "O"); 
return noughtOrCross; 
+1

Просто потому, что Java имеет только один троичный оператор, люди думают, что это имя этого оператора, но это не так, его реальное имя - это * условный оператор * (* ternary * просто описывает тип этого оператора, в будущем Java может ввести больше из них так лучше назвать вещи своими настоящими именами). – Pshemo

+0

@Pshemo Спасибо, обновлено. :) – Mikaveli

0

Если значение равно 0, то "X" будет возвращен, в противном случае это будет "0". Подробнее о тройном оператора с примерами здесь:

http://alvinalexander.com/java/edu/pj/pj010018

и здесь

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html

Чтобы ответить на второй вопрос: «Если бы было быть больше игроков в игре, как Y и Z, как бы вы использовали этот оператор возврата для более чем двух опций »:

Этот метод всегда будет возвращать либо« X », либо« 0 », количество игроков (или вызовы метода) не влияет на возврат в этом случае (тип возврата: String, возможные значения, которые нужно вернуть: либо «X», либо «0» из-за условного выражения в операторе return), что если исключение не было ранее.

0

Это один из операторов shorthand на Java, № 13 в ссылке. Это в основном сокращенный оператор if.:)

Смежные вопросы