开发者

How to select an index value from a String Array in a JOptionPane

I've created a JOptionPane as a selection m开发者_如何转开发ethod. I want the int value for selection 1,2 or 3 of the String Array so I can use it as a counter. How do I get the index of the array and set it equal to my int variable 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 =**);
}


You can use JOptionPane.showOptionDialog() if you want the index of the option to be returned. Otherwise, you will have to iterate through the option array to find the index based on the user selection.

For instance:

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;
 }
}


Since Tim Bender already gave a verbose answer, here's a compact version.

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

Also, note that showInputDialog(..) takes an array of Objects, not necessarily strings. If you had Loan objects and implemented their toString() methods to say "X years at Y.YY%" then you could supply an array of Loans, then probably skip the array index and just jump right to the selected Loan.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜