2013-12-16 1 views
1

Предполагается, что метод должен создать столько кнопок, , сколько им заданы строки, а затем вернуть выбранную строку. Eclipse говорит, что мой оператор return не возвращает строку. Как мне написать инструкцию return для этого?Как вернуть строку из функции с помощью vararg

private static String getActionDialog(String... actions) { 

    JRadioButton[] buttons = new JRadioButton[actions.length]; 
    ButtonGroup group = new ButtonGroup(); 

    for (int i = 0; i < actions.length; i++) { 
     buttons[i] = new JRadioButton(actions[i]); 
     group.add(buttons[i]); 
    } 

    buttons[0].setSelected(true); 

    Object[] message = buttons; 
    Object[] options = { "OK", "Cancel" }; 
    int n = JOptionPane.showOptionDialog(null, message, 
      "title", JOptionPane.OK_CANCEL_OPTION, 
      JOptionPane.QUESTION_MESSAGE, null, options, options[0]); 

    if (n == JOptionPane.OK_OPTION) { 
     if (buttons[0].isSelected()) { 
      return actions[0]; 
     } 
     if (buttons[1].isSelected()) { 
      return actions[1]; 
     } 
    } else { 
      return null; 
     } 
} 

ответ

4

Что происходит, если условие в

if (n == JOptionPane.OK_OPTION) { 

решает true и ни одно из условий в

if (buttons[0].isSelected()) { 
    return actions[0]; 
} 
if (buttons[1].isSelected()) { 
    return actions[1]; 
} 

постановляет true? В этом случае ваш метод не имеет оператора return. Вам нужно вернуть что-то во всех путях выполнения.

Добавить

return null; 

или соответствующее return заявление в конце метода.