Как выбрать значение индекса из String Array в JOptionPane - PullRequest
0 голосов
/ 19 июня 2010

Я создал JOptionPane в качестве метода выбора. Я хочу, чтобы значение int для выбора 1,2 или 3 из String Array, чтобы я мог использовать его в качестве счетчика. Как получить индекс массива и установить его равным моей переменной int loanChoice?

public class SelectLoanChoices {
    int loanChoice = 0;
    String[] choices = {"7 years at 5.35%", "15 years at 5.5%",
            "30 years at 5.75%"};
        String input = (String) javax.swing.JOptionPane.showInputDialog(null, "Select a Loan"
                ,"Mortgage Options",JOptionPane.QUESTION_MESSAGE, null,
                choices,
                choices[0]
                **loanChoice =**);
}

Ответы [ 2 ]

1 голос
/ 19 июня 2010

Поскольку Тим Бендер уже дал подробный ответ, вот компактная версия.

int loanChoice = -1;
if (input != null) while (choices[++loanChoice] != input);

Также обратите внимание, что showInputDialog(..) принимает массив объектов, а не обязательно строк. Если у вас есть объекты Loan и вы реализовали их методы toString(), чтобы сказать «X years at Y.YY%», то вы могли бы предоставить массив Loans, а затем, возможно, пропустить индекс массива и просто перейти прямо к выбранному Loan.

1 голос
/ 19 июня 2010

Вы можете использовать JOptionPane.showOptionDialog(), если хотите, чтобы был возвращен индекс опции. В противном случае вам придется перебирать массив параметров, чтобы найти индекс на основе выбора пользователя.

Например:

public class SelectLoanChoices {
 public static void main(final String[] args) {
  final String[] choices = { "7 years at 5.35%", "15 years at 5.5%", "30 years at 5.75%" };
  final Object choice = JOptionPane.showInputDialog(null, "Select a Loan", "Mortgage Options",
    JOptionPane.QUESTION_MESSAGE, null, choices, choices[0]);
  System.out.println(getChoiceIndex(choice, choices));

 }

 public static int getChoiceIndex(final Object choice, final Object[] choices) {
  if (choice != null) {
   for (int i = 0; i < choices.length; i++) {
    if (choice.equals(choices[i])) {
     return i;
    }
   }
  }
  return -1;
 }
}
...