views:

32

answers:

2

I've created a JOptionPane as a selection method. 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 =**);
}
+1  A: 

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;
 }
}
Tim Bender
+1  A: 

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.

Gunslinger47